4

我最近更新了ionic-cli,我现在正在尝试使用命令模拟离子应用程序ionic cordova emulate ios

但是,每个 api 请求都会出现 CORS 错误

Access-Control-Allow-Origin 不允许来源http://localhost:8080 。

我发现ionic 文档对上述命令这么说

就像直接运行 cordova emulate 一样,但也监视 Web 资产的变化,并通过 --livereload 选项提供实时重新加载功能。

似乎该命令还启动了一个服务器,这可以解释为什么 origin 是localhost而不是file://.

但是,我尝试使用模拟器进行模拟cordova emulate ios,或者使用模拟器构建应用程序ionic cordova build ios并运行输出,但我仍然遇到 CORS 错误。

在 Android 上模拟工作正常,并且有一个代理可以在浏览器中运行应用程序。

知道我是否走在正确的轨道上,是否有办法模仿file://?将应用程序发布到 App Store 时,此问题是否仍然存在?

4

2 回答 2

1

iOS 上 CORS 的问题实际上不是来自于,而是来自于我切换到使用fromionic-cli的事实。WKWebViewUIWebview

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

它还提到了有关 CORS 的内容:

UIWebview 或 iOS 中较旧的 webview 从未真正实施过 CORS,但 WKWebView 提供并且不提供禁用它的方法。为了解决这个问题,您需要正确实现 CORS 并添加以下条目:

来源:http://localhost:8080

如果这不可能(您不拥有 API),则可以使用本机 HTTP 插件 @ionic-native/http 来解决此问题。

所以我在我的 api 上启用了 CORS,一切都像以前一样工作。

于 2017-10-16T19:15:17.870 回答
0

尝试创建一个离子代理,将此代码添加到 ionic.config.json

"proxies": [{
    "path": "/api",
    "proxyUrl": "http://your-server.com"
}]

然后简单地调用你的服务器http.get('/api')

如果它仍然无法正常工作,请尝试使用 cordova http 插件而不是 angular http。

于 2017-09-10T22:48:56.670 回答