我想在JavaScript中使用Azure Service Bus REST API . 不幸的是我遇到了跨域问题,因为我的Service Bus命名空间与我的站点不在同一个域中 .
我知道您可以使用许多Azure服务启用CORS,但我在Azure文档或其他地方找不到任何资源,告诉我如何为Service Bus执行此操作 .
有人知道是否以及如何做到这一点?
我通过使用以下 Web.config 创建一个单独的Web应用程序解决了这个问题,这只是一个简单的代理 .
Web.config
<?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
通常从纯度的角度来看,从客户端调用Service Bus看起来不太好,我宁愿将该调用包装到您自己的API中 . 但我不知道你的情况,它可能是有效的 .
3 回答
我通过使用以下
Web.config
创建一个单独的Web应用程序解决了这个问题,这只是一个简单的代理 .Azure Service Bus REST API默认支持CORS . 所有来源都被接受 .
说实话,这不是特定于Azure的 . 如果您使用的是jQuery,则需要启用跨域请求选项,请在此处阅读更多内容http://api.jquery.com/jQuery.ajax/ . 还有一个JavaScript ServiceBus SDK:https://github.com/ddobric/ServiceBusJavaScriptSdk
通常从纯度的角度来看,从客户端调用Service Bus看起来不太好,我宁愿将该调用包装到您自己的API中 . 但我不知道你的情况,它可能是有效的 .