我尝试使用获取API和XHR在某些URL上发布一些数据,但是它们都无法正常工作,并且响应状态为401,当我在邮递员上测试发布请求时,它可以正常工作。
const rawl = fetch("URL GOES HERE", {
method: 'POST',
mode: 'no-cors',
credentials: "same-origin",
data: {
"name": "SOME INPUT VALUES HERE",
"input": {}
},
headers: {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "TOKEN GOES HERE"
},
});
rawl.then((data) => {
console.log(data);
})
使用提取api和使用xhr的
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.responseText;
}
};
xmlhttp.open("POST", "URL GOES HERE", true);
xmlhttp.setRequestHeader("Content-type", "application/json");
xmlhttp.setRequestHeader("Accept", "application/json");
xmlhttp.setRequestHeader("Authorization", "TOKEN GOES HERE");
xmlhttp.send({
"name": "INPUT VALUE GOES HERE",
"input": {}
});
此返回错误: 对预检请求的响应未通过访问控制检查:请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://localhost:3000”。响应的HTTP状态代码为401。
但是邮递员通常使用相同的标题和值!!!
答案 0 :(得分:0)
在没有任何信息的情况下很难重现错误。也许在Postman中,您已经在“自动化”标签中启用了其他令牌,或者在“标题”标签中提供了另一个标题。
也许看一下File-> Settings-> Proxy或/和General,其中有一些选项,例如“ Send Postman Token header”。
答案 1 :(得分:0)
对预检请求的响应未通过访问控制检查:否 请求中存在“ Access-Control-Allow-Origin”标头 资源。
这是与cors相关的错误,浏览器会在实际请求之前发出预检请求,以检查您的域是否有权访问资源。
邮递员不执行飞行前请求,这就是您得到响应的原因。
您必须修改后端,并允许您的来源将此标头Access-Control-Allow-Origin
添加到您的特定域中。