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

3
我在我们的线上网站中,在嵌入了CSS文件的字体文件中在Chrome浏览器上遇到以下错误,该CDN存储于我们的rackspace中:

由于跨域资源共享政策没有提供“访问控制允许来源”头部信息,所以来自 'https://aaa-aaa.ssl.cf3.rackcdn.com' 的字体被阻止加载。因此,'https://www.mysite.co.uk' 没有被允许访问。

当我从CDN获取这些文件时,如何在响应中添加Access-Control-Allow-Origin头部信息?
1个回答

3

从文档和Rackspace团队的帮助中,我最终理解了这个问题。

对于只包含CDN文件的启用了CDN的容器,调整容器的元头是没有意义的。这些仅会被非CDN文件继承。

我必须在字体文件本身上调整响应标头。不幸的是,目前只能通过API支持此操作,我使用在Windows 7上从命令行中使用curl。


认证

RACKSPACE文档

第一步是进行认证:

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"

然后从响应中提取tokenid和与cloudFiles相关的endpointpublicURL。我将响应复制到Notepad++中,分别搜索了tokencloudfiles


调整文件响应头

RACKSPACE文档

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

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

它起作用了吗?

我收到了一个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

很遗憾,您必须等待文件的TTL过期或清除缓存才能看到实时结果。当我这样做时,进行边缘清除需要超过一天的时间。我使用以下方式检查了实时版本:

curl -i -XGET https://live-version-container-hash.ssl.cf3.rackcdn.com/pseudo-dir1/psuedo-dir2/my-site-icons.ttf

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

我决定在上传时为我的文件添加版本号,并同时添加响应头:

curl -i -XPUT -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-icons1.0.0.ttf -T my-site-icons.tff

这是在我的本地目录中执行的,该文件my-site-icons.tff位于其中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接