0

我正面临这个错误,有人可以指导我吗?我已经在 proxy.conf.json 中进行了配置我已经在 user.service.ts 中设置了带有基本 url 的标头

import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions } from '@angular/http';
import { map } from 'rxjs/operators';


@Injectable()
export class UserService {

    constructor(public http: Http) { }

    yaho() {
        const headers = new Headers();
        headers.append('Access-Control-Allow-Origin', '*');
        // headers.append('Access-Control-Allow-Credentials', 'true');
        headers.append('Access-Control-Allow-Headers', 'Content-Type');

        headers.append('Access-Control-Allow-Methods', 'GET, POST');


        headers.append('Content-Type', 'application/json');
        headers.append('appKey', '4d71e017-6896-477b-bb0d-93bb9e6d3224');
        const options = new RequestOptions({ headers });
        const baseURL = 'abx/gas.json';
        console.log('Base url---->' + baseURL);
        const url = 'localhost:8081/abx/gas.json';
        return this.http.get(url, options)
            .pipe(map(res => res.json()));
    }
}
4

2 回答 2

2

您必须将后端配置为接受 CORS,而不是前端

(您尝试添加的标头应添加到后端而不是角度应用程序)

于 2020-03-02T11:25:25.267 回答
0

您无法通过尝试在客户端中启用 CORS 来解决您的问题。这是http的一般/基本特征,而不是特定于离子或角度的。如果您无法更改后端,则可以使用代理。

“Ionic CLI 引入了让代理服务器发出请求的功能,以解决您可能遇到的任何 CORS 问题。由于服务器正在向您的目的地发送新请求,因此没有来源,因此不需要 CORS”

如此处所述和此处的示例回购

我假设这是您如何尝试处理 CORS 请求而不在后端启用它。

请注意,“CORS 仅在我们在运行 ionic serve 或 ionic run -l 时运行或测试我们的应用程序时才会出现问题。”

设置代理:

  1. 在我们的 ionic.project 中设置代理
{
  "name": "proxy-example",
  "app_id": "",
  "proxies": [
    {
      "path": "/api",
      "proxyUrl": "http://cors.api.com/api"
    }
  ]
}
  1. 将我们的端点 URLS 替换为代理服务器
  2. ionic serve

除了这个“处理 CORS 问题的最简单方法是最终要求您的 API 提供商允许所有主机”

于 2020-03-03T16:13:25.523 回答