由于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标头?
答案 0 :(得分:2)
最后从文档和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
的{{1}}以及与token
相关的publicURL
的{{1}}。我将响应复制到Notepad ++并分别搜索endpoint
和cloudFiles
。
我尝试使用以下命令调整标题:
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
所在的本地目录执行