我最近更新了ionic-cli
,现在我正尝试使用ionic cordova emulate ios
命令模拟离子应用。
但是,每次api请求都会出现CORS错误
Access-Control-Allow-Origin不允许原点http://localhost:8080。
我发现ionic docs对上述命令
说了这个与直接运行cordova模拟一样,但也会监视Web资产的变化,并使用--livereload选项提供实时重新加载功能。
似乎该命令也会启动一个服务器,这可以解释为什么原点是localhost
而不是file://
。
但是,我尝试使用cordova emulate ios
进行模拟,或者使用ionic cordova build ios
构建应用程序并使用模拟器运行输出,但我仍然遇到CORS错误。
在Android上模拟效果很好,并且有一个代理可以在浏览器中运行该应用程序。
任何想法我是否走在正确的轨道上,是否有办法从file://
模仿?将应用程序发布到App Store时,此问题是否仍然存在?
答案 0 :(得分:1)
iOS上的CORS问题实际上并非来自ionic-cli
,而是来自WKWebView
使用UIWebview
的事实。
This blog post解释了有关WKWebView的更多信息,以及它为什么比它的前任更好。
它还提到了有关CORS的内容:
UIWebview或iOS中较旧的webview从未实际强制执行CORS,但WKWebView确实并没有提供禁用它的方法。要解决此问题,您需要正确实现CORS并添加以下条目:
如果这不可能(您不拥有API),解决方法可以是使用本机HTTP插件,@ ionic-native / http。
所以我在api上启用了CORS,一切都和以前一样。
答案 1 :(得分:0)
尝试创建离子代理,将此代码添加到ionic.config.json
"proxies": [{
"path": "/api",
"proxyUrl": "http://your-server.com"
}]
然后使用http.get('/api')
如果仍然无效,请尝试使用cordova http插件而不是使用angular http。