setRequestHeader无法在jQuery .ajax()中工作

时间:2013-03-25 19:43:28

标签: jquery ajax node.js cache-control

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

0 个答案:

没有答案