如何在Azure存储Blob上启用CORS

时间:2017-04-24 22:50:12

标签: azure cors azure-storage-blobs

我正在尝试使用此article使用Azure存储blob在Azure B2C上自定义UI页面。它需要启用CORS。我已经使用test-cors.org测试了它,我知道它不是,但我不知道如何设置它

Ther文章使用https://wingtiptoysb2c.blob.core.windows.net/b2c/wingtip/selfasserted.html我测试并返回200但是我没有 https://bookssorted.blob.core.windows.net/b2c/selfasserted.html

article讨论了如何使用此PUT https://myaccount.blob.core.windows.net/?restype=service&comp=properties HTTP/1.1但我该如何运行?

编辑:我正在使用Azure存储资源管理器,我在blob上设置了这些规则,但它仍未从test-cors.org返回http 200 enter image description here

EDIT2:这是对身份验证策略发出请求的URL,该策略加载使请求加载blob的页面

https://login.microsoftonline.com/bookssorted.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_bookssortedAuthenticationPolicy&client_Id=35f308cd-8914-4035-9f62-cec7600c1727&nonce=defaultNonce&redirect_uri=https%3A%2F%2Flocalhost%2Fbookssorted%2Fsecure%2Fsuccess&scope=openid&response_type=id_token&prompt=login

EDIT3:请求的标头 enter image description here enter image description here enter image description here enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

为了使cross-origin request成功,请求必须与CORS配置匹配。这包括request originrequest headers& exposed (response) headers。任何不匹配都会导致请求失败。

如果原点已知,则必须在CORS规则中指定该URL(包括协议和端口号,如果适用)。如果原点未知,您可以指定*作为原点,所有网址都可以提出此类请求。

请求标头和公开标头也是如此。由于对Azure存储的不同请求使用不同的请求标头并返回不同的响应标头,因此建议在CORS规则中将这些标记的值设置为*。这将确保接受所有请求/响应标头。

答案 1 :(得分:-1)

您可以在多个级别配置CORS; Web服务器,浏览器,资源(API或在您的情况下返回200的东西)或客户端。

我不清楚你想要实现或解决的是什么,但我认为你可能需要提供更多信息。

失败在哪里?你有什么访问权限?你想通过“运行”那个HTTP命令来实现什么?

您是否有错误或对架构流程的某种描述以及发生故障的位置?

另外,如果您了解CORS实际上是什么会有所帮助:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

在这里你可以看到,你的问题有很多解决方案。例如,您可以在每个请求上将此附加到HTTP标头,这将允许跨源资源响应:

Access-Control-Allow-Origin:*

您的飞行前检查可能失败。您的浏览器可能会阻止该请求。如果REQUEST和RESPONSE都不是来自同一个域名(mysite.com),那么您将遇到问题并需要以适当的方式解决它。

我希望这会有所帮助。