首页 文章

在Azure Service Bus命名空间上启用CORS

提问于
浏览
4

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

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

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

3 回答

  • 0

    我通过使用以下 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>
    
  • 1

    Azure Service Bus REST API默认支持CORS . 所有来源都被接受 .

  • -3

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

    通常从纯度的角度来看,从客户端调用Service Bus看起来不太好,我宁愿将该调用包装到您自己的API中 . 但我不知道你的情况,它可能是有效的 .

相关问题