Angular - 加载资源失败:预检响应不成功

Posted

技术标签:

【中文标题】Angular - 加载资源失败:预检响应不成功【英文标题】:Angular - Failed to load resource: Preflight response was not successful 【发布时间】:2018-08-23 14:30:46 【问题描述】:

我正在尝试从 Angular 访问 API 端点以取回 JSON 数据。我的代码如下:

import  Component, OnInit  from '@angular/core';
import HttpClient from '@angular/common/http';
import  HttpHeaders from '@angular/common/http';

@Component(
  selector: 'app-api-caller',
  templateUrl: './api-caller.component.html',
  styleUrls: ['./api-caller.component.css']
)

export class ApiCallerComponent implements OnInit 

    // works with 'https://api.github.com/users/seeschweiler'

  ngOnInit(): void 

    const options =  headers: new HttpHeaders().set('Content-Type', 'application/json') ;
    this.http.get('https://api.upsie.com/api/helloworld', options).subscribe(
      data => 
      console.log(data);
    ,
      err => 
      console.log('An Error occured');
      );
  

  constructor(private http: HttpClient) 
  


浏览器控制台显示错误:

error message

“加载资源失败:预检响应不成功”是什么意思,如何解决?

【问题讨论】:

【参考方案1】:

Angular 在实际请求之前发送一个 OPTIONS 请求。因此,您的 API 必须允许正确的 CORS 标头来支持 OPTIONS 预检。

如果您使用 express,请查看 cors 包。

【讨论】:

以上是关于Angular - 加载资源失败:预检响应不成功的主要内容,如果未能解决你的问题,请参考以下文章

在启动中启用 CORS 失败并出现预检错误

加载资源失败:服务器使用 Angular 响应状态为 404 (),使用 GitHub Pages 部署

预检响应不成功

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

Angular 2无法加载预检响应无效(重定向)[重复]

CORS 预检响应未成功