在 iOS 上模拟离子应用程序时出现 CORS 问题
CORS issues when emulating ionic app on iOS
我最近更新了 ionic-cli
,我现在正尝试使用命令 ionic cordova emulate ios
来模拟离子应用程序。
但是,每个 api 请求都出现 CORS 错误
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.
我发现 ionic docs 对上述命令有这样的说法
Like running cordova emulate directly, but also watches for changes in web assets and provides live-reload functionality with the --livereload option.
似乎该命令还启动了一个服务器,这可以解释为什么来源是 localhost
而不是 file://
。
但是,我尝试使用 cordova emulate ios
进行模拟,或者使用 ionic cordova build ios
构建应用程序并使用模拟器 运行 输出,但我仍然遇到 CORS 错误。
在 Android 上模拟工作正常,并且在浏览器中有 运行 应用程序的代理。
知道我是否走在正确的轨道上,是否有方法可以效仿 file://
?将应用发布到 App Store 时,此问题是否仍然存在?
尝试创建离子代理,将此代码添加到 ionic.config.json
"proxies": [{
"path": "/api",
"proxyUrl": "http://your-server.com"
}]
然后用 http.get('/api')
调用你的服务器
如果仍然无法正常工作,请尝试使用 cordova http 插件而不是 angular http。
iOS 上的 CORS 问题实际上并非来自 ionic-cli
,而是因为我从 UIWebview
切换到使用 WKWebView
。
This blog post 详细解释了 WKWebView 以及为什么它比它的前身好得多。
它还提到了有关 CORS 的内容:
UIWebview, or the older webview in iOS, never actually enforced CORS, but WKWebView does and does not provide a way to disable it. To address this, you need to implement CORS correctly and add the following entry:
Origin: http://localhost:8080
IF this is not possible (you do not own the API), a workaround can be to use the native HTTP plugin, @ionic-native/http.
所以我在 api 上启用了 CORS,一切都像以前一样。
我最近更新了 ionic-cli
,我现在正尝试使用命令 ionic cordova emulate ios
来模拟离子应用程序。
但是,每个 api 请求都出现 CORS 错误
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.
我发现 ionic docs 对上述命令有这样的说法
Like running cordova emulate directly, but also watches for changes in web assets and provides live-reload functionality with the --livereload option.
似乎该命令还启动了一个服务器,这可以解释为什么来源是 localhost
而不是 file://
。
但是,我尝试使用 cordova emulate ios
进行模拟,或者使用 ionic cordova build ios
构建应用程序并使用模拟器 运行 输出,但我仍然遇到 CORS 错误。
在 Android 上模拟工作正常,并且在浏览器中有 运行 应用程序的代理。
知道我是否走在正确的轨道上,是否有方法可以效仿 file://
?将应用发布到 App Store 时,此问题是否仍然存在?
尝试创建离子代理,将此代码添加到 ionic.config.json
"proxies": [{
"path": "/api",
"proxyUrl": "http://your-server.com"
}]
然后用 http.get('/api')
如果仍然无法正常工作,请尝试使用 cordova http 插件而不是 angular http。
iOS 上的 CORS 问题实际上并非来自 ionic-cli
,而是因为我从 UIWebview
切换到使用 WKWebView
。
This blog post 详细解释了 WKWebView 以及为什么它比它的前身好得多。
它还提到了有关 CORS 的内容:
UIWebview, or the older webview in iOS, never actually enforced CORS, but WKWebView does and does not provide a way to disable it. To address this, you need to implement CORS correctly and add the following entry:
Origin: http://localhost:8080
IF this is not possible (you do not own the API), a workaround can be to use the native HTTP plugin, @ionic-native/http.
所以我在 api 上启用了 CORS,一切都像以前一样。