获取 api 预检请求失败

Posted

技术标签:

【中文标题】获取 api 预检请求失败【英文标题】:Fetch api preflight request failing 【发布时间】:2018-05-21 02:17:36 【问题描述】:

我正在尝试从公共 API 发出 GET 请求,但似乎无法弄清楚为什么 cors 预检请求不断失败。

Response for preflight has invalid HTTP status code 404

我已经进行了一些搜索,似乎这需要在服务器端进行更改,但我只是想确保我没有做错任何事情。我正在使用以下代码:

try 
  let guideData = await fetch(guideUrl, 
    method: 'GET',
    headers: 
      Authorization: `Bearer $json.access_token`,
    
  );
 catch(err) 
  console.log("Failed to fetch data", err);

我已经使用 Postman 和 Hurl 进行了测试,似乎都可以正常工作,但我无法让它在我的客户端上工作。

【问题讨论】:

POSTMAN进行命中时尝试OPTIONS方法 【参考方案1】:

当您从 Postman 和 Curl 发送 http 请求时,两者的行为不像 Web 浏览器那样。在您的情况下,您使用的是运行 js 的网络浏览器。代码本身看起来不错,但您需要对令牌进行编码以使授权在发送时起作用。

问题肯定出在服务器端,要点是当您发送OPTIONS 时,它会告诉您是您的问题还是服务器的问题。很有可能来自您发布的回复,肯定是 CORS。

【讨论】:

以上是关于获取 api 预检请求失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 window.fetch api 的预检请求失败

ASP.NET Core 2:使用 [Authorize] 对 API 的 Ajax 调用使预检请求失败

在 Angular 9 + Asp.net Core Web API 中启用 Windows 身份验证后,预检(选项)请求失败

Axios CORS/Preflight 因 Laravel 5.4 API 调用而失败

桌面应用程序是不是需要 HTTP 预检请求?

Asp.net Odata Web API 跨域放置和路径请求浏览器预检错误