3

由于我们 rackspace CDN 上的 CSS 中嵌入的字体文件,我在 Chrome 中的实时站点上收到以下错误:

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

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

4

1 回答 1

3

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

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

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


认证

机架空间文档

第一步是认证:

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的和相关的。我将响应复制到 Notepad++ 并分别搜索和。tokenpublicURLendpointcloudFilestokencloudfiles


调整文件响应标头

机架空间文档

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

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从文件所在的本地目录执行

于 2014-11-12T16:14:18.603 回答