[英]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
切換到使用WKWebView
的UIWebview
。
這篇博文詳細解釋了 WKWebView 以及為什么它比它的前身好得多。
它還提到了關於 CORS 的這一點:
UIWebview 或 iOS 中較舊的 webview 從未真正強制執行過 CORS,但 WKWebView 確實也沒有提供禁用它的方法。 要解決此問題,您需要正確實施 CORS 並添加以下條目:
如果這是不可能的(您不擁有 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.