簡體   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