发布后要求回复401状态,但在测试中担任邮递员

时间:2018-07-05 09:30:17

标签: javascript xmlhttprequest httprequest postman fetch-api

我尝试使用获取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。

但是邮递员通常使用相同的标题和值!!!

2 个答案:

答案 0 :(得分:0)

在没有任何信息的情况下很难重现错误。也许在Postman中,您已经在“自动化”标签中启用了其他令牌,或者在“标题”标签中提供了另一个标题。

也许看一下File-> Settings-> Proxy或/和General,其中有一些选项,例如“ Send Postman Token header”。

答案 1 :(得分:0)

  

对预检请求的响应未通过访问控制检查:否   请求中存在“ Access-Control-Allow-Origin”标头   资源。

这是与cors相关的错误,浏览器会在实际请求之前发出预检请求,以检查您的域是否有权访问资源。

邮递员不执行飞行前请求,这就是您得到响应的原因。

您必须修改后端,并允许您的来源将此标头Access-Control-Allow-Origin添加到您的特定域中。

No 'Access-Control-Allow-Origin' - Node / Apache Port Issue