【问题标题】:Request response with 401 status when post but work on postman in testing发布时请求具有 401 状态的响应,但在测试中使用邮递员
【发布时间】:2024-01-02 18:02:01
【问题描述】:

我尝试使用 fetch 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);
})

这个带有 fetch 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”标头。因此,Origin 'http://localhost:3000' 不允许访问。响应的 HTTP 状态代码为 401。

但在邮递员上,它通常带有相同的标题和值!!!

【问题讨论】:

    标签: javascript xmlhttprequest httprequest postman fetch-api


    【解决方案1】:

    没有任何信息很难说如何重现您的错误。也许在 Postman 中,您在 Autorization 选项卡中打开了其他标记,或者在 Headers 选项卡中提供了另一个标题。

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

    【讨论】:

      【解决方案2】:

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

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

      邮递员不执行预检请求,这就是您收到响应的原因。

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

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

      【讨论】:

        最近更新 更多