首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iPhone模拟器中的离子3 CORS问题

iPhone模拟器中的离子3 CORS问题
EN

Stack Overflow用户
提问于 2017-10-14 20:47:56
回答 1查看 6.9K关注 0票数 3

我在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应用程序(在浏览器中工作)中执行的代码

代码语言:javascript
运行
复制
    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并连接到在模拟器中运行的应用程序,就会出现以下错误:

代码语言:javascript
运行
复制
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问题?我认为所有的资源都是基于文件://基础的。另外,为什么科多瓦白名单插件不能解决这个问题呢?

提前谢谢。花了很多时间在这上面。

EN

Stack Overflow用户

回答已采纳

发布于 2017-10-16 19:07:32

我最近遇到了一个类似的问题。我的离子型应用程序已经运行了几个月,没有任何问题,我突然开始在iOS上接收CORS错误。

问题是我从UIWebview转向使用UIWebview

这篇博客文章解释了更多关于WKWebView的内容,以及为什么它比它的前身要好得多。

它还提到了有关CORS的这一点:

UIWebview或iOS中的旧way视图从来没有实际强制使用CORS,但是WKWebView确实提供了禁用它的方法,也没有提供禁用它的方法。要解决这个问题,您需要正确地实现CORS,并添加以下条目: 产地:http://localhost:8080 如果这是不可能的(您不拥有API),解决方法可以是使用本机HTTP插件@离子型本机/http。

因此,这两个解决方案是:

  1. 如果您拥有所使用的api,则在其上启用CORS。
  2. 如果无法修改api,则可以使用离子本机Http

我去了第一次,一切又开始正常工作。

票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46749187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档