6

使用下面的 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 配置为接受标头?

4

0 回答 0