CORS可在Chrome上运行,但不能在Safari或iOS设备上运行

时间:2019-04-08 12:12:40

标签: ionic4

CORS可以在Chrome上运行,但不能在Safari或iOS设备上运行(IONIC APP) 我试图向我的请求添加一些标题 但没有用

        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT',
        'Accept': 'application/json',
        'content-type': 'application/json'

我还尝试在Safari中禁用“跨域限制”,此方法效果很好,但在IOS模拟器或设备上却不起作用

那么,如何解决呢?

4 个答案:

答案 0 :(得分:0)

离子应用程序(android,ios和离子服务)在本地主机上工作。默认情况下,Web API不允许来自其他来源的请求。

因此,您有3个选择:

  1. 允许在Web api /服务器中进行跨源请求。
  2. 在离子应用程序link中设置代理。我试过了它在android中没有在ios中工作。
  3. 使用离子本机http link(推荐),它将同时解决这两个问题。

答案 1 :(得分:0)

您可以在应用的后端代码上添加以下代码。  header('Access-Control-Allow-Origin:*'); 希望对您有帮助。

答案 2 :(得分:0)

Recently i got same problem but i resolve it by using cordova-plugin-advanced-http for android and ios device.

Install

ionic cordova plugin add cordova-plugin-advanced-http
npm install @ionic-native/http

Use

import { HTTP } from '@ionic-native/http/ngx';

constructor(private http: HTTP) {}

...

this.http.get('http://ionic.io', {}, {})
  .then(data => {

    console.log(data.status);
    console.log(data.data); // data received by server
    console.log(data.headers);

  })
  .catch(error => {

    console.log(error.status);
    console.log(error.error); // error message as string
    console.log(error.headers);

  });

More details: see official link

答案 3 :(得分:0)

我通过在服务器端Config中添加Access-Control-Allow-Headers:"*"并用我的自定义标头替换*来做到这一点