当您尝试向服务器发出请求时 - 不会发送标头。
<!DOCTYPE html>
<head>
<title>Devpage</title>
</head>
<body>
</body>
<script type="text/javascript">
const myHeaders = new Headers();
myHeaders.set('Authorization', 'Basic dXNlcjpwd2Q='); // user:pwd
fetch(
'http://tihonv.pythonanywhere.com/', {
method: 'POST',
mode: 'no-cors',
headers: myHeaders,
}).then((resp) => console.log(resp));
</script>
发送请求时,不发送标头。
您可以通过在此处发送请求进行检查
事实上
Authorization,它们no-cors是相互排斥的东西。您自己禁止传输登录名和密码,所以现在不要生气;)要传递此标头,您仍然需要将
mode: "cors".在您的情况下,如果您在同一个站点内执行所有这些操作,那应该足以让标题
Autorization通过。下面我们考虑发送请求的站点和接收请求的站点是不同站点的情况。跨域查询更复杂。(example.com 是站点
fetch,yourserver.com 是发送请求的站点)发送这样的跨域请求时,浏览器会先向服务器发送OPTIONS请求:
为此,您的服务器应该回答它允许您传输所有这些,并且它允许所有这些到发送请求的站点(来源):
只有这样,当浏览器收到来自服务器的发送许可时,它才会发送一个带有以下不幸信息的真实 POST 请求
Authorization:并且在响应 POST 请求时,yourserver.com 必须仍然记得表明它允许 example.com 这样做:
如果你错过了其中任何一个,你的
fetch将无法工作。这些是偏执的现代浏览器尝试这个