我想在我的 xhr 中添加 header 。
当我使用 setRequestHeader 时,它实际上所做的是向 Access-Control-Request-Headers 添加一个值。
如果我编码:
xhr.setRequestHeader('key1', 'value1');
xhr.setRequestHeader('key2', 'value2');
我在请求 header 中看到的是: Access-Control-Request-Headers:accept, key1, key2
我希望看到的是:
键1:值1
键2:值2
我怎样才能阻止这种合并? 谢谢!
最佳答案
您正在创建一个非简单的跨域 XMLHttpRequest (read more about CORS here),这意味着您的浏览器必须在您的预期请求之前发送预检 (OPTIONS
) 请求。这样做是为了与服务器验证是否允许来自不同来源的客户端发出所述请求。当您发出 CORS 请求时,浏览器会在发送请求时自动将 Access-Control-Request
header 添加到请求中。
Access-Control-Request-Headers
header 是包含在请求中的以逗号分隔的非简单 header 列表。您可以设置的唯一“简单” header 是:Accept
、Accept-Language
、Content-Language
、Last-Event-ID
和 Content-Type
(如果设置为以下之一:application/x-www-form-urlencoded
、multipart/form-data
,或 text/plain
)。
服务器必须在其响应中使用相应的 Access-Control-Allow
header 响应预检请求中的那些 Access-Control-Request
header 。因此,在您的情况下,它需要使用 Access-Control-Allow-Headers: key1, key2
进行响应。
关于javascript - xhr.setRequestHeader() 合并我的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23386798/