繁体   English   中英

在 iOS 上模拟 ionic 应用程序时出现 CORS 问题

[英]CORS issues when emulating ionic app on iOS

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

但是,我收到每个 api 请求的 CORS 错误

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

我发现离子文档对上述命令有这样的说法

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

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

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

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

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

iOS 上 CORS 的问题实际上不是来自ionic-cli ,而是来自我从UIWebview切换到使用WKWebViewUIWebview

这篇博文详细解释了 WKWebView 以及为什么它比它的前身好得多。

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

UIWebview 或 iOS 中较旧的 webview 从未真正强制执行过 CORS,但 WKWebView 确实也没有提供禁用它的方法。 要解决此问题,您需要正确实施 CORS 并添加以下条目:

来源: http://localhost:8080

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

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

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

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

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

如果它仍然不起作用,请尝试使用cordova http插件而不是angular http。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM