xhr.setRequestHeader()合并我的标题

时间:2014-04-30 11:23:06

标签: javascript jquery xmlhttprequest request-headers

我想在我的xhr中添加标题。

当我使用setRequestHeader时,它实际上做的是向Access-Control-Request-Headers添加一个值。

如果我编码:

xhr.setRequestHeader('key1', 'value1');
xhr.setRequestHeader('key2', 'value2');

我在请求标头中看到的是: Access-Control-Request-Headers:accept,key1,key2

我希望看到的是:

key1:value1

key2:value2

如何防止这种合并? 谢谢!

1 个答案:

答案 0 :(得分:5)

您正在制作一个非简单的跨域XMLHttpRequest(read more about CORS here),这意味着您的浏览器必须在您的预期请求之前发送预检(OPTIONS)请求。这样做是为了与服务器验证允许来自不同来源的客户端发出所述请求。当您发出CORS请求时,浏览器会在发送请求时自动将Access-Control-Request标头添加到请求中。

Access-Control-Request-Headers标头是包含在请求中的非简单标头的逗号分隔列表。唯一的"简单"您可以设置的标头是:AcceptAccept-LanguageContent-LanguageLast-Event-IDContent-Type(如果设置为application/x-www-form-urlencoded之一,multipart/form-datatext/plain)。

服务器必须响应预检请求中的Access-Control-Request个标头,并在其响应中使用相应的Access-Control-Allow标头。因此,在您的情况下,需要回复Access-Control-Allow-Headers: key1, key2