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



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

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

有谁知道这是否以及如何做到这一点?

我已经通过使用以下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 Service Bus REST API 默认支持 CORS。接受所有来源。

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

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

最新更新