javascript - xhr.setRequestHeader() 合并我的标题

标签 javascript jquery xmlhttprequest request-headers

我想在我的 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 是:AcceptAccept-LanguageContent-LanguageLast-Event-ID Content-Type(如果设置为以下之一:application/x-www-form-urlencodedmultipart/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/

相关文章:

javascript - 为什么检查 void 0 比检查 undefined 快得多?

javascript - 如何重新定位我的 jQuery 弹出窗口?

javascript - 代码不适用于更大范围的数字

javascript - 背景图像缩放效果。

javascript - JQuery 需要多个选择器

javascript - 为什么 CURL 的 PUT 在上传 payload 之前验证失败,而 XHR PUT 只是在之后?

javascript - 如何在回调函数中为 chrome 扩展图标设置动画?

jquery - 我如何将其放入外部 javascript 文件中

javascript - html5 Canvas绘制图像背景+ 9张图像

javascript - 我可以将以下代码发布到任何其他域吗?