【问题标题】:Refused to get unsafe header "Content-Range"拒绝获取不安全的标头“Content-Range”
【发布时间】:2013-05-06 23:02:56
【问题描述】:

由于某种原因,我无法再访问“Content-Range”的响应标头...因此无法使用 XHR 确定资源的文件大小。 我在这一行的 Chrome 上收到错误 Refused to get unsafe header "Content-Range"

var cr = this.getResponseHeader('Content-Range');

这是 CORS 配置:

<?xml version="1.0" ?>
<CorsConfig>
<Cors>
    <Origins>
        <Origin>*</Origin>
    </Origins>
    <Methods>
        <Method>GET</Method>
        <Method>HEAD</Method>
        <Method>DELETE</Method>
    </Methods>
    <ResponseHeaders>
        <ResponseHeader>x-goog-meta-foo1</ResponseHeader>
        <ResponseHeader>origin</ResponseHeader>
        <ResponseHeader>range</ResponseHeader>
        <ResponseHeader>Content-Range</ResponseHeader>
        <ResponseHeader>Content-Length</ResponseHeader>
    </ResponseHeaders>
    <MaxAgeSec>1800</MaxAgeSec>
</Cors>

CURL 输出:

$ curl -H "Origin: http://peer5.com" http://commondatastorage.googleapis.com/peer5_vod/wind2_orig.mp4 -s -D - -o /dev/null
HTTP/1.1 200 OK
Server: HTTP Upload Server Built on May 8 2013 16:51:19 (1368057079)
Expires: Mon, 13 May 2013 09:47:40 GMT
Date: Mon, 13 May 2013 08:47:40 GMT
Cache-Control: public, max-age=3600, no-transform
Last-Modified: Fri, 22 Mar 2013 17:09:47 GMT
ETag: "755232ae8fef22bc7b4e9510a68a646e"
x-goog-generation: 1363972188238000
x-goog-metageneration: 2
Content-Type: video/mp4
x-goog-hash: crc32c=pZmS2Q==
x-goog-hash: md5=dVIyro/vIrx7TpUQpopkbg==
Accept-Ranges: bytes
Content-Length: 15535795
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Content-Length, Date, Server, Transfer-Encoding

【问题讨论】:

  • 能否请您发布为存储桶配置的 CORS 文档?您可以运行gsutil getcors 命令来获取它。
  • Content-Range 不是简单的响应标头之一。如果您在 CORS 中明确设置 Access-Control-Expose-Headers 以包含它,我希望它应该可以工作。
  • @BrandonYarbrough 在 cors 配置中查看响应标头 Content-Range

标签: http-headers xmlhttprequest google-cloud-storage


【解决方案1】:

这似乎是我们这边的一个错误。 Access-Control-Expose-Headers 标头中仅返回 ResponseHeaders 列表中的最后一个标头值。我们正在努力推出修复程序,但作为一种解决方法,如果您只需要 Content-Range 标头(Content-Length 被 CORS 规范视为 简单标头 并自动添加),请尝试将您的 CORS 配置设置为:

<?xml version="1.0" ?>
<CorsConfig>
<Cors>
    <Origins>
        <Origin>*</Origin>
    </Origins>
    <Methods>
        <Method>GET</Method>
        <Method>HEAD</Method>
        <Method>DELETE</Method>
    </Methods>
    <ResponseHeaders>
        <ResponseHeader>Content-Range</ResponseHeader>
    </ResponseHeaders>
    <MaxAgeSec>1800</MaxAgeSec>
</Cors>
</CorsConfig>

更新:此错误已修复。

【讨论】:

  • @whadar 该错误现已修复
  • 我在金丝雀上,仍然可以看到这种情况。
猜你喜欢
  • 2017-01-22
  • 2014-07-07
  • 1970-01-01
  • 2023-02-24
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 2015-11-19
  • 2017-12-28
相关资源
最近更新 更多