Let*_*oll 3 cors cordova-plugins ionic3
我得到了我认为是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白名单插件不能解决此问题?
提前致谢。在这个上花了很多时间。
我最近遇到了类似的问题。我的离子应用程序运行了几个月都没有问题,突然间我开始在iOS上收到CORS错误。
问题是我转而使用WKWebViewfrom UIWebview。
这篇博客文章更多地解释了WKWebView为什么它比以前更好。
它还提到了有关CORS的问题:
UIWebview或iOS中较旧的Webview从未实际执行CORS,但WKWebView确实提供了并且不提供禁用它的方法。为了解决这个问题,您需要正确地实现CORS并添加以下条目:
如果这是不可能的(您不拥有API),则一种解决方法是使用本机HTTP插件@ ionic-native / http。
因此,两种解决方案是:
我选择了第一个,一切又重新开始正常工作。
| 归档时间: |
|
| 查看次数: |
5900 次 |
| 最近记录: |