使用下面的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标头,以便在Send不是一个选项之前删除。
$.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配置为接受标头?