在 Azure 服务总线命名空间上启用 CORS

Enable CORS on Azure Service Bus Namespace

我想在 JavaScript 中使用 Azure 服务总线 REST API。不幸的是,我 运行 遇到了跨源问题,因为我的服务总线命名空间与我的站点不在同一个域中。

我知道您可以为许多 Azure 服务启用 CORS,但我在 Azure 文档或其他地方找不到任何资源告诉我如何为服务总线执行此操作。

有谁知道这是否可以完成以及如何完成?

老实说,这不是 Azure 特有的。如果您使用 jQuery,则需要启用跨域请求选项,请在此处阅读更多内容 http://api.jquery.com/jQuery.ajax/. There is also a JavaScript ServiceBus SDK: https://github.com/ddobric/ServiceBusJavaScriptSdk

通常从纯粹的角度来看,从客户端调用服务总线看起来不太好,我宁愿将该调用包装到您自己的 API 中。但我不知道你的场景,它可能是有效的。

我已经通过使用以下 Web.config 创建一个单独的 Web 应用程序解决了这个问题,这只是一个简单的代理。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Proxy" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{CACHE_URL}" pattern=".*" />
          </conditions>
          <action type="Rewrite" url="https://mynamespace.servicebus.windows.net/{R:0}" logRewrittenUrl="true" />
      <serverVariables>
        <set name="HTTP_ACCEPT_ENCODING" value="" />
      </serverVariables>
    </rule>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Expose-Headers" value="BrokerProperties" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

Azure 服务总线 REST API 默认支持 CORS。接受所有来源。