跨源资源共享(Access-Control-Allow-Origin标头)Rackspace Cloudfiles CDN

时间:2014-11-11 13:05:02

标签: cors cdn rackspace-cloudfiles

由于CSS中的嵌入式字体文件全部位于我们的rackspace CDN上,因此我在Chrome中的实际网站上收到以下错误:

  

来自原点的字体' https://aaa-aaa.ssl.cf3.rackcdn.com'已被跨源资源共享策略阻止加载:No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' https://www.mysite.co.uk'因此不允许访问。

从CDN获取这些文件时,如何在响应中添加Access-Control-Allow-Origin标头?

1 个答案:

答案 0 :(得分:2)

最后从文档和Rackspace工作人员的帮助中解决了这个问题。

重要的是,对于仅包含CDN文件的启用CDN的容器,没有必要调整容器的元标题。这些只是由CDN上没有的文件继承。

我不得不调整字体文件本身的响应标头。不幸的是,目前只支持API,我在Windows 7中使用了命令行中的curl。


身份验证

RACKSPACE DOCS

第一步是验证:

curl -d "{\"auth\":{\"RAX-KSKEY:apiKeyCredentials\":{\"username\":\"my_username\",\"apiKey\":\"my_api_key\"}}}" -H "Content-Type: application/json" "https://identity.api.rackspacecloud.com/v2.0/tokens"

然后从回复中提取id的{​​{1}}以及与token相关的publicURL的{​​{1}}。我将响应复制到Notepad ++并分别搜索endpointcloudFiles


调整文件响应标头

RACKSPACE DOCS

我尝试使用以下命令调整标题:

token

有效吗?

我收到了cloudfiles回复并检查了它是否符合以下条件:

curl -i -XPOST -H "x-auth-token: my-auth-token" -H "Access-Control-Expose-Headers: Access-Control-Allow-Origin" -H "Access-Control-Allow-Origin: *" https://storage101.lon3.clouddrive.com/v1/MossoCloudFS_my-end-point/container/pseudo-dir1/psuedo-dir2/my-site-icons.ttf

不幸的是,您必须等待文件的TTL过期,或清除它以查看实时结果。当我这样做时,花了一天时间进行边缘净化。我查看了实时版本:

HTTP/1.1 2xx

在上传时设置文件响应标头

我决定在我的文件中添加一个版本并在上传过程中添加标题:

curl -i -XGET -H "X-Auth-Token: my-auth-token" https://storage101.lon3.clouddrive.com/v1/MossoCloudFS_my-end-point/container/pseudo-dir1/psuedo-dir2/my-site-icons.ttf

从文件curl -i -XGET https://live-version-container-hash.ssl.cf3.rackcdn.com/pseudo-dir1/psuedo-dir2/my-site-icons.ttf 所在的本地目录执行