【发布时间】:2016-01-29 11:41:59
【问题描述】:
我想在 JavaScript 中使用 Azure 服务总线 REST API。不幸的是,我遇到了跨源问题,因为我的服务总线命名空间与我的站点不在同一个域中。
我知道您可以为许多 Azure 服务启用 CORS,但我在 Azure 文档或其他地方找不到任何资源告诉我如何为服务总线执行此操作。
有谁知道这是否可以做到以及如何做到?
【问题讨论】:
标签: azure cors azureservicebus
我想在 JavaScript 中使用 Azure 服务总线 REST API。不幸的是,我遇到了跨源问题,因为我的服务总线命名空间与我的站点不在同一个域中。
我知道您可以为许多 Azure 服务启用 CORS,但我在 Azure 文档或其他地方找不到任何资源告诉我如何为服务总线执行此操作。
有谁知道这是否可以做到以及如何做到?
【问题讨论】:
标签: azure cors azureservicebus
我已经通过使用以下 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。接受所有来源。
【讨论】:
老实说,这不是 Azure 特有的。如果您使用 jQuery,则需要启用跨域请求选项,请在此处阅读更多信息 http://api.jquery.com/jQuery.ajax/。还有一个 JavaScript ServiceBus SDK:https://github.com/ddobric/ServiceBusJavaScriptSdk
通常从纯度的角度来看,从客户端调用服务总线看起来并不好,我宁愿将该调用包装到您自己的 API 中。但我不知道你的情况,它可能是有效的。
【讨论】: