将自定义域(CNAME)映射到azure存储以解决与CORS相关的问题?

时间:2014-02-07 11:44:59

标签: azure cors azure-storage azure-storage-blobs

我相信在最近几天(2014年2月4日左右),微软宣布了对Azure存储(link here)的CORS支持,这显然是一个好主意。

就我而言,我只想找到一些使用自定义域映射到azure存储的确认,这将解决以下问题:

  1. Azure存储有一个包含资产的容器(图像/文档等)
  2. 我在azure存储中也有css / js资产
  3. 因为目前azure存储位置类似于mystorage.blob.core.windows.net,而我的实际域名(其中页面/服务是实时的)是www.mydomain.com,我收到CORS问题从不同的地方加载资产当然是域名。

    所以我的问题是如果我将CNAME(例如assets.mydomain.com)映射到azure存储,这会解决与CORS相关的问题吗?在我看来它应该是,但是我想检查一下其他人是否有类似的经历他们可以评论?

    提前致谢。

1 个答案:

答案 0 :(得分:3)

如果只是通过linkscriptimg标记等加载资源,则不应该在加载资产时遇到CORS问题。 CORS仅适用于JavaScript代码在浏览器中发出的AJAX请求。

此外,如果在Azure存储帐户Blob服务上正确配置了CORS规则,则用于解决该帐户的域无关紧要;它是当前网页从(Origin域)提供的域,必须由启用CORS的服务接受。

例如,如果您的网页是从yaysite.com提供的,并且您尝试使用XMLHttpRequest访问yay.blob.core.windows.net上的资源,则浏览器会在请求中添加Origin标头:< / p>

Origin: http://yaysite.com

然后,yay.blob.core.windows.net上的服务器需要返回一个与响应标头匹配的Access-Control-Allow-Origin标头:

Access-Control-Allow-Origin: http://yaysite.com

如果浏览器在响应中没有看到此标头,它将丢弃数据,XMLHttpRequest对象将触发error事件。

Setting CORS rules on Azure Storage is described in this MSDN blog post