使用下面的 jQuery ajax() 调用不起作用。如果我删除beforeSend
参数它工作正常。根据 Chrome 网络检查器,它在不工作时的状态是“加载取消”。使用 jQuery 1.7.2 和 1.9.1 以及 Chrome、Safari 和 Firefox 进行测试。无论我输入什么参数都会失败setRequestHeader
(例如 "test" , "true" 也会失败)。当我beforeSend
在请求标头中包含以下内容时:Access-Control-Request-Headers:accept, cache-control, origin
。如果重要,api_url
则位于不同的子域上,但我们在服务器上设置了 CORS,因此它在所有其他情况下都可以正常工作。我需要设置 Cache-Control 标头,因此不能在发送之前删除。
$.ajax({
url: api_url,
beforeSend : function (xhr){xhr.setRequestHeader('Cache-Control', "public");} ,
dataType: "json",
success: successCallback,
error: APIError
});
更新:它似乎正在到达 node.js 服务器,因为它以 200 作为状态响应。问题是否可能是服务器如何响应标头?同样,无论我使用什么键/值参数,它都会这样做,因此它不会与缓存相关。
update2:在我的控制台中,我收到“Access-Control-Allow-Headers 不允许请求标头字段 Cache-Control”。我试过用谷歌搜索,但离答案更近了。似乎不接受任何请求标头字段。这是否意味着必须将 node.js 配置为接受标头?