gpt4 book ai didi

javascript - 如何从跨域 Ajax 请求访问 Content-Length header ?

转载 作者:可可西里 更新时间:2023-11-01 01:34:06 25 4
gpt4 key购买 nike

我的 JavaScript 应用程序需要在使用 Ajax 下载资源之前确定资源的长度。通常这不是问题,您只需发出 HEAD 请求并提取 Content-Length

var xhr = $.ajax({type:"HEAD", url: "http://own-domain/file.html"})
xhr.getResponseHeader("Content-Length")
// "2195"

但是,资源存储在与客户端不同的服务器上。 (我控制的服务器)。因此,我正在使用 CORS 进行跨域 ajax 请求,并设置服务器以响应 HEAD 请求和带有自定义 header 的 GET/POST 请求的预检请求。

这在主要方面工作得很好,但在使用 CORS 时,我似乎找不到从 HEAD 响应中提取 Content-Length 的方法:

var xhr = $.ajax({type:"HEAD", url: "http://other-domain/file.html"})
xhr.getResponseHeader("Content-Length")
// ERROR: Refused to get unsafe header "Content-Length"

我已经尝试在预检或响应中设置各种 header ,例如

Access-Control-Expose-Headers: Content-Length

规范似乎建议应该提供它。但无论我做什么,我似乎都无法让客户端使用 Content-Length header 。有什么建议吗?

( Chrome 8)

最佳答案

我遇到了同样的问题,直到我在其他地方找到一个线程教我在我的 .htaccess 中添加这一行:

Header add Access-Control-Expose-Headers "Content-Length"

然后 BOOM,它得到修复。

关于javascript - 如何从跨域 Ajax 请求访问 Content-Length header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4850288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com