gpt4 book ai didi

jquery - 浏览器和 AJAX 响应 CORS header 不同

转载 作者:行者123 更新时间:2023-12-01 01:09:54 27 4
gpt4 key购买 nike

我正在尝试设置一个支持 CORS 的 API,我可以通过 JavaScript 访问该 API。

我用来测试的代码是这样的:

$(function(){
get = function(url_fragment)
{
$.ajax({
url: 'my_api',
dataType: 'json',
cache: false,
success: function(data)
{
alert('success');
},
error: function(data)
{
alert('failure');
}
})
}
get('');
});

这是一个相当简单的 AJAX 请求。

我已在 nginx 配置中启用 CORS

add_header Access-Control-Allow-Origin *;

当在我的浏览器中访问 API 时,firebug 显示了预期的 header

Access-Control-Allow-Origin *
Connection keep-alive
Content-Length 59
Content-Type application/json;charset=utf-8
Server nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
Status 200
X-Frame-Options sameorigin
X-Powered-By Phusion Passenger (mod_rails/mod_rack) 3.0.11
X-XSS-Protection 1; mode=block

当我在 firebug 中查看 XHR 请求时,CORS header 不存在:

Connection          keep-alive
Content-Encoding gzip
Content-Type text/plain
Server nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
Status 403
Transfer-Encoding chunked
X-Frame-Options sameorigin
X-Powered-By Phusion Passenger (mod_rails/mod_rack) 3.0.11

使用curl时我确实收到了正确的 header

$ curl -i my_api
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
Connection: keep-alive
Status: 200
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.11
X-Frame-Options: sameorigin
X-XSS-Protection: 1; mode=block
Content-Length: 61
Server: nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
Access-Control-Allow-Origin: *

不用说,我很困惑为什么这不起作用,有什么想法吗?

最佳答案

add_header仅适用于新的状态代码(200、204、301、302 或 304)。缺少 header 的响应是 403,因此 add_header 将不起作用。第三方headers more模块更加灵活,可以为任何状态代码添加 header 。

关于jquery - 浏览器和 AJAX 响应 CORS header 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798812/

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