我在iPhone模拟器版本模拟器-829.6/ xCode 9.0中得到了我认为是CORS的问题
我构建了一个ionic3应用程序w/ Cordova,可以使用代理在浏览器中运行它。但是,当我在sim或我的手机上运行它时,它将不会针对远程http调用进行身份验证。
因此,我添加了Cordova调试器并将其调试到xCode控制台:
这是http错误对象:
{"_body":{"isTrusted":true},“isTrusted”:0,"ok":false,“statusText”:“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());
我真的很困惑因为有两件事:
1)我已经安装了Cordova whitelist插件,并且在对抗远程服务器之前已经取得了成功。不知道怎么回事
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.如何在Sim或实际设备中获得CORS问题?我认为所有的资源都是基于文件://基础的。另外,为什么科多瓦白名单插件不能解决这个问题呢?
提前谢谢。花了很多时间在这上面。
发布于 2017-10-16 19:07:32
我最近遇到了一个类似的问题。我的离子型应用程序已经运行了几个月,没有任何问题,我突然开始在iOS上接收CORS错误。
问题是我从UIWebview转向使用UIWebview。
这篇博客文章解释了更多关于WKWebView的内容,以及为什么它比它的前身要好得多。
它还提到了有关CORS的这一点:
UIWebview或iOS中的旧way视图从来没有实际强制使用CORS,但是WKWebView确实提供了禁用它的方法,也没有提供禁用它的方法。要解决这个问题,您需要正确地实现CORS,并添加以下条目: 产地:http://localhost:8080 如果这是不可能的(您不拥有API),解决方法可以是使用本机HTTP插件@离子型本机/http。
因此,这两个解决方案是:
我去了第一次,一切又开始正常工作。
https://stackoverflow.com/questions/46749187
复制相似问题