http://localhost:4200' 已被 CORS 策略阻止:对预检请求的响应未通过

Posted

技术标签:

【中文标题】http://localhost:4200\' 已被 CORS 策略阻止:对预检请求的响应未通过【英文标题】:http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't passhttp://localhost:4200' 已被 CORS 策略阻止:对预检请求的响应未通过 【发布时间】:2019-05-13 04:59:17 【问题描述】:

我有一个我似乎无法弄清楚的问题。我想使用以下代码从我的 Angular 客户端向服务器发送一个 http 参数请求,但出现异常:

http://localhost:4200' 已被 CORS 策略阻止:对预检请求的响应未通过

我想澄清一下,我是否在 Angular 中犯了任何错误,或者这是服务器端的问题?

授权:

login(username: string, password: string) 
    let params = new HttpParams();
    params = params.append('email', username);
    params = params.append('password', password);
    return this.http.post<any>('URL',params:params)
      .pipe(map(user => 
        if (user && user.token) 
        
      ),
        catchError(this.handleError)
      );
  

【问题讨论】:

Response to preflight request doesn't pass access control check的可能重复 @AbhiRam 检查这个:***.com/questions/53087341/… 【参考方案1】:

是的,这是服务器端问题而不是客户端问题。

您需要从服务器端为您的localhost 启用CORS,以便从您的Angular 代码中使用API​​。

PS:为了快速修复,您可以安装chrome plugin 以启用CORS,但我们不建议这样做。

【讨论】:

所以也许你应该去寻找从后端启用 CORS 的精确修复【参考方案2】:

修改您的服务器以添加标头 Access-Control-Allow-Origin: * 以启用来自任何域的跨域请求。

【讨论】:

【参考方案3】:

在运行应用程序之前在 VSCode 中添加配置(F5)

"runtimeArgs": ["--disable-web-security"]

在 launch.json 文件中

【讨论】:

以上是关于http://localhost:4200' 已被 CORS 策略阻止:对预检请求的响应未通过的主要内容,如果未能解决你的问题,请参考以下文章

http://localhost:4200' 已被 CORS 策略阻止:对预检请求的响应未通过

Angular 6 + Spring Boot:错误:“来自原点 'http://localhost:4200' 已被 CORS 策略阻止”

访问“http://....”源“http://localhost:4200”的 XMLHttpRequest 已被 CORS 策略阻止

从源“http://localhost:4200”访问“localhost:8088/user/”的 XMLHttpRequest 已被 CORS 策略阻止 [重复]

带有 Angular 的 Spring Boot。从源“http://localhost:4200”访问“http://localhost:8080/”的 XMLHttpRequest 已被 CORS

从 localhost:4200 访问 localhost:8080 的 XMLHttpRequest 已被 CORS 策略阻止