如何不受CORS政策的限制

时间:2019-02-07 05:01:34

标签: ionic-framework ionic2 ionic3 ionic-native

我在注册页面的发布方法中尝试了apiurl ...

import { Injectable } from '@angular/core';
import { Http, Headers, HttpModule } from '@angular/http';
import 'rxjs/add/operator/map';

  let apiUrl = 'http://aaaaa.in/outfit/index.php/api/v1/';

  @Injectable()
 export class AuthServiceProvider {

   constructor(public http: Http) {
   console.log('Hello AuthServiceProvider Provider');
 }
 public register(data){
  return new Promise((resolve, reject) => {
  let headers = new Headers();
  alert('11');
    headers.append('Content-Type', 'application/json');
    headers.append('Access-Control-Allow-Origin', '*');
     headers.append( 'Access-Control-Allow-Headers', 'Authorization, Content-Type' );

    //headers.append('Access-Control-Allow-Origin', 
 'http://localhost:8100');
 //headers.append('Access-Control-Allow-Credentials', 'true');

    alert(apiUrl);
    this.http.post(apiUrl+'account', JSON.stringify(data), {headers: headers})

      .subscribe(res => {
        resolve(res.json());
       alert(Response);
      }, (err) => {
        reject(err);
      });
});

  }

} 

它显示出这样的错误……CORS策略阻止了从原点“ http://aaaaa.in/outfit/index.php/api/v1/account”到“ http://localhost:8100”的XMLHttpRequest的访问:对预检请求的响应未通过访问控制检查:它没有HTTP正常状态。”

先谢谢了。

2 个答案:

答案 0 :(得分:1)

您是否要在chrome上运行该应用程序?如果您在chrome上运行该应用程序,则通常会发生这种情况,我什至不知道为什么,但是如果您在实际设备上进行尝试,它会很好地工作。我遇到了同样的问题,并通过chrome扩展程序 Allow-Control-Allow-Origin 克服了这个问题。我不知道是否有解决此问题的适当方法,但这可能对您有帮助

答案 1 :(得分:0)

方法1: 在Chrome中安装“ Allow-Control-Allow-Origin”扩展程序可解决此开发问题。

方法2: 您需要更改 ionic.config.json

中的某些行
{
  "name": "foresight",
  "app_id": "47182aef",
  "type": "angular",
  "integrations": {
    "cordova": {}
  },
  "proxies": [
    {
      "path":"/account",
      "proxyUrl": "https://api-foresight.castingapi.in/account"
    }
  ]
}

您可以使用以下代码致电外部服务

headers = new Headers({'key': '12345678'});
options = new RequestOptions ({headers: this.headers}); 
return this.http.get('/account/?fields=name', this.options)

在ionic.config.js中进行更改后,请记住去离子服务或离子实验室