预检请求未通过访问控制检查:

Posted

技术标签:

【中文标题】预检请求未通过访问控制检查:【英文标题】:preflight request doesn't pass access control check: 【发布时间】:2022-01-04 10:44:30 【问题描述】:

在 Angular 中触发 http 调用时出现以下错误

CORS 策略已阻止从源“http://localhost:4200”访问“loginapi”处的 XMLHttpRequest:对预检请求的响应未通过访问控制检查:否“Access-Control-Allow-Origin”请求的资源上存在标头。

userdata(user: string): Observable<any> 
    const form = new FormData();
    return this.http.put<any>(`/$user`, form, 
      headers: this.jsonHeaders
    );
  

 private jsonHeaders = 
    accept: 'application/json'
  ;

【问题讨论】:

你读懂了developer.mozilla.org/en-US/docs/Web/HTTP/CORS吗? 客户端应用程序对这些错误无能为力。服务器必须配置为接受应用程序的请求。在 enable-cors.org 了解如何为特定服务器启用 CORS。 在此处查看我对相关问题的回答:***.com/a/70112286/502999 【参考方案1】:

当浏览器发出跨域请求时,浏览器会添加一个带有当前来源(方案、主机和端口)的 Origin 标头。

假设您可以控制提供 API 功能的服务器,您必须在服务器端允许访问(更新 CORS 策略)(尤其是出于安全原因),请查看以下内容: https://developer.chrome.com/docs/extensions/mv2/xhr/

【讨论】:

以上是关于预检请求未通过访问控制检查:的主要内容,如果未能解决你的问题,请参考以下文章

“对预检请求的响应未通过访问控制检查”是啥意思?

对预检请求的响应未通过访问控制检查

对预检请求的响应未通过访问控制检查

对预检请求的响应未通过访问控制检查

CORS:对预检请求的响应未通过访问控制检查:预检请求不允许重定向

GraphQL 网关`预检请求未通过访问控制检查`