【问题标题】: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)
      );
  }

【问题讨论】:

标签: angular angular-httpclient


【解决方案1】:

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

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

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

【讨论】:

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

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

【讨论】:

    【解决方案3】:

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

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

    在 launch.json 文件中

    【讨论】:

      猜你喜欢
      • 2019-11-18
      • 2019-12-29
      • 2019-04-17
      • 2020-01-26
      • 2019-12-14
      • 1970-01-01
      • 2019-11-16
      • 2019-10-13
      相关资源
      最近更新 更多