上下文
请参阅此问题:在 Azure 服务总线命名空间上启用 CORS
真的,我想要一个前端的ReactJS应用程序,它与Azure API通信,并将结果的一部分呈现到屏幕上。然后从用户获取输入,并将其发送回 Azure API。冲洗并重复。 不幸的是,CORS 几乎排除了这一点,并且您不能 [1] 覆盖 ServiceBus 命名空间的 CORS 规则。
因此,建议的解决方案是一个精简的代理服务器,代理Azure API,以规避CORS。
(非常欢迎这个问题的替代解决方案!
[1] 阅读:我目前看不到任何方法,我的谷歌搜索也看不到。
问题
另一个问题的用户提出了相关的web.config文件,所以现在我想创建该代理服务器。我真的不希望该服务器执行其他任何操作,我希望它尽可能透明。
设置该服务器的最简单方法是什么?
我有点希望我能做这样的事情: "告诉 Azure 我想要一个 Web 服务器,并将该 web.config 文本粘贴/上传到 Azure 门户"?
如果它是相关的,目前我的堆栈除了 npm 和 JS Create-React-App 模板的堆栈之外什么都没有。我想我们也会在 Azure 中托管网站。
我让这个工作,而且它非常轻松 - Azure可以JustDoThis。
记录我在这里为自己写的笔记,为任何未来迷失的流浪者写:)
如链接问题中所述,Azure 服务器不会(也不能(启用 CORS,因此我们需要以某种方式规避它。方法是创建一个反向代理服务器,该服务器接受请求,将其转发到 Azure,接收响应,添加相关的 CORS 标头并将其返回给调用方。
以下步骤,除了跳过"基本身份验证"步骤(步骤#3和#4(,从这个Microsoft博客:https://blogs.msdn.microsoft.com/mihansen/2018/04/18/reverse-proxy-with-basic-authentication-in-azure-web-app/
- 步骤 1:创建新的 Azure Web 应用
- 步骤 2:添加 applicationHost.xdt 文件(
Homesite
( - 第 2a 步:使用提供的模板设置 .xdt 文件的内容(我认为它实际上是一个
web.config
文件?
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" />
</system.webServer>
</configuration>
- 跳过步骤3和4(与身份验证有关,如果只是重定向,则不需要身份验证。
- 步骤 5:更新/修改/创建重写规则
第 2 步是通过 KUDU 实现的,可在此处访问:
https://yourazuresitedomain.scm.azurewebsites.net/
关于什么是 KUDU 以及如何使用它的一些链接:
- https://blogs.msdn.microsoft.com/benjaminperkins/2014/03/24/using-kudu-with-windows-azure-web-sites/
- https://www.jamessturtevant.com/posts/How-to-add-edit-and-remove-files-in-your-azure-webapp-using-the-kudu-service-dashboard/