Ionic2,Angular2:使用http get进行REST API服务调用时如何避免CORS问题?



我的后端在某个远程服务器上,我有网址。我需要使用HTTP GET和POST方法将数据从那里渲染到我的Ionic2,Angular2项目中。但是当我尝试进行服务调用时,我遇到了此错误:

XMLHttpRequest 无法加载 http://192.162.91.159:8080/movieengine2/api/search/getMoviedetails。 对预检请求的响应未通过访问控制检查:否 "访问控制-允许-源"标头存在于请求的 资源。因此不允许使用原产地"http://localhost:8100" 访问/

我在互联网上搜索了很多,但大多数论坛都太旧了。 我提到了以下内容:

Angular 2 - 请求的资源上不存在"访问控制允许来源"标头

https://forum.ionicframework.com/t/cors-problem-with-ionic-2-and-angular-2-no-access-control-allow-origin-header-is-present-on-the-requested-resource/58350/6

https://forum.ionicframework.com/t/ionic-2-cors-issue/59815

https://github.com/angular/angular/issues/13554

这是我的服务文件中的内容

import { Injectable } from '@angular/core';
import { Http, Headers, Response, RequestOptions, BaseRequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/do';
import 'rxjs/add/operator/catch';
@Injectable()
export class TestService {
backendUrl:string='';
parameters: RequestOptions;
constructor(public http: Http) {
console.log('Hello TestService Provider');
}
private extractData(res: Response) {
let body = res.json();
return body || {};
}
private handleError(error: Response){
return Observable.throw(error.json().error || 'Server Error')
}

get(url, params) 
{
var headers = new Headers
({
'X-Requested-With': 'XMLHttpRequest'
});
headers.append("Accept", 'application/json');
headers.append('Content-Type', 'application/json' );
let options = new RequestOptions({ headers: headers });
this.backendUrl='http://192.162.91.159:8080/movieengine2/api/search/'+url;
return this.http.get(this.backendUrl).map(this.extractData).catch(this.handleError);
}

我什至尝试在我的ionic.config.json中添加它

"proxies": [
{
"path": "/api",
"proxyUrl": "http://api.steampowered.com"
}

]

有人可以告诉我如何避免这个问题吗? 我想要一个可以在设备或浏览器上运行的永久解决方案。提前谢谢。这些是我正在使用的版本。

"cors": "^2.8.3",
"ionic-angular": "2.1.0",
"ionic-native": "2.4.1",
"ionicons": "3.0.0",
"rxjs": "5.0.0-beta.12",
"sw-toolbox": "3.4.0",
"underscore": "^1.8.3",
"zone.js": "0.6.26"

我无法为我正在使用的版本找到合适的解决方案。

有 4 种方法可以解决这个问题:

  1. 您可以设置代理(阅读本教程)

  2. 您可以通过模拟器或手机运行应用(不方便)

  3. 您可以通过安装科尔多瓦白名单插件来解决 CORS 问题

  4. 您也可以尝试安装 Chrome 允许控制源扩展程序。

相关内容

  • 没有找到相关文章

最新更新