我得到了我认为是iPhone Simulator版本SimulatorApp-829.6 / xCode 9.0中的CORS问题
我构建了带有Cordova的ionic3应用,并可以使用代理在浏览器中运行它。但是当我在SIM卡或手机上运行它时,它不会针对远程http呼叫进行身份验证。
因此,我添加了Cordova调试器并调试到xCode控制台:
这是http错误对象:
{“ _body”:{“ isTrusted”:true},“ status”:0,“ ok”:false,“ statusText”:“”,“ headers”:{},“ type”:3,“ url”:null }
这是我在Ionic应用程序中执行的代码(可在浏览器中使用)
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Authorization', 'Basic ' + this.base64Service.encode(id + ':' + pw));
headers.append('Access-Control-Allow-Origin', '*');
return this.http.get('http://myserver.com/api/v1/authenticate', {headers: headers}).map(res => res.json());Run Code Online (Sandbox Code Playgroud)
我真的很困惑,因为有两件事:
1)我已经安装了Cordova白名单插件,并且在针对远程服务器之前取得了成功。不知道发生了什么
2)如果我使用Safari Developer> Simulator并连接到在模拟器中运行的应用程序,则会出现此错误:
Failed to load resource: Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.
XMLHttpRequest cannot load http://myserver.com/api/v1/authenticate. Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)
如何在Sim或实际设备中获得CORS问题?我认为资源都是基于file://的。另外,为什么Cordova白名单插件不能解决此问题?
提前致谢。在这个上花了很多时间。