我有一个项目设置,可以在端口 3000 上访问也在开发中的本地服务器。在开发中,我在ionic.config.json
的代理设置中使用以下配置以避免 CORS 问题:
"proxies": [
{
"path": "/api",
"proxyUrl": "http://192.168.1.14:3000/api"
},
{
"path": "/auth",
"proxyUrl": "http://192.168.1.14:3000/auth"
}
]
但是,当我在 android 设备上运行它时,它似乎坚持忽略这些设置并调用file:///auth/...
而不是真正的 URL。通过手动输入 IP 地址可以解决此问题。有没有办法简化流程并在ionic serve
和本机应用程序上都有一组固定的工作 URL?
我遇到了同样的问题,并使用Platform.is()
方法解决了它。当设备是安卓设备时,我会更改网址以包含我的 API 的 IP 地址。
ionic.config.json
"proxies": [
{
"path": "/api",
"proxyUrl": "http://192.168.80.10:3000/api"
}
]
我的示例服务:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Platform } from 'ionic-angular';
import 'rxjs/add/operator/toPromise';
@Injectable()
export class MemberService {
private url = 'api/members';
constructor(
private http: Http,
private platform: Platform
) {
if(this.platform.is('android')) {
this.url = 'http://192.168.80.10:3000/' + this.url;
}
}
getMembers(): Promise<any> {
return this.http.get(`${this.url}.json`)
.toPromise()
.then(result => result.json())
.catch(error => console.log(error));
}
}
可能this.platform.is('mobile')
也会很好。