使用setRequestHeader时,默认请求标头会丢失



我用javaScript发送一个请求。如果我用这种方式发送

var request = new XMLHttpRequest();
request.open("POST",/*some url*/);
/*here's nothing*/
request.addEventListener('load', function(event) {/*some magic*/});
request.send();

Chrome显示发送的请求标头:

:authority: <some data>
:method: POST
:path: /
:scheme: https
accept: */*
accept-encoding: gzip, deflate, br
accept-language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
content-length: 0
origin:  <some data>
referer:  <some data>
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-site
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/96.0.4664.45 Safari/537.36

如果我试图添加另一个标头(通过用替换/,这里没有/

request.setRequestHeader("auth", "token");  

发送的请求标头似乎丢失了一些数据。它现在包括:

auth: token
Referer: <some data>
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36

";原点";get丢失了,但我需要它来处理CORS。那它为什么会迷路呢?

任何想法都赞赏

Thnaks@John把我带到这条路上:

实际上,XMLHttpRequest或fetch并不重要。但是获取文档指引了我正确的方向。问题是,我的服务器回答了";OPTIONS";用http 400请求,飞行前搞砸了什么。我对它进行了调整,使它能够正确处理OPTIONS请求的CORS,并使用HTTP200发送它,现在一切都很顺利。

最新更新