5

我想将标题添加到我的 xhr。

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

如果我编码:

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

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

我希望看到的是:

键1:值1

键2:值2

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

4

1 回答 1

7

您正在制作一个非简单的跨域 XMLHttpRequest(在此处阅读有关 CORS的更多信息),这意味着您的浏览器必须OPTIONS在您的预期请求之前发送一个 preflight () 请求。这样做是为了向服务器验证是否允许来自不同来源的客户端发出所述请求。当您发出 CORS 请求时,浏览器会Access-Control-Request在发送请求时自动将标头添加到请求中。

Access-Control-Request-Headers头是请求中包含的非简单标头的逗号分隔列表。您可以设置的唯一“简单”标题是:、、、、和Accept(如果它设置为:、、Accept-Language或)之一。Content-LanguageLast-Event-IDContent-Typeapplication/x-www-form-urlencodedmultipart/form-datatext/plain

服务器必须在其响应中Access-Control-Request使用相应的Access-Control-Allow标头来响应预检请求中的这些标头。因此,在您的情况下,它需要以Access-Control-Allow-Headers: key1, key2.

于 2014-04-30T14:24:02.243 回答