[Cordova] App 在 iPhone 上出現 Origin null is not allowed by Access-Control-Allow-Origin 錯誤,無法連網

[Cordova] App 在 iPhone 上出現 Origin null is not allowed by Access-Control-Allow-Origin 錯誤,無法連網

最近打開自己寫的圖書館多重帳戶 iOS 版

想要修正一些問題,卻發現 app 似乎無法連上網路:

 

Safari 開發者工具找出 Cordova app 裡的 JavaScript 錯誤 這篇的方法,

先編譯好除錯版本用的 app,再用 Safari 連上 app,

這時在 Safari 的開發者工具 Console 視窗裡,

看到有許多的錯誤,主要就是 Origin null is not allowed by Access-Control-Allow-Origin

導致 HTTP 連線直接被拒絕:

 

上網查了一下,似乎是 Cordova app裡,

iOS 平台上的 WKWebView 元件,會把來源 (origin) 設成 null

所以會導致 跨來源資源共用(CORS – Cross-Origin Resource Sharing) 被阻擋~

 

解決的方法,是安裝類似 Raphcal/cordova-plugin-cors 這類的 Cordova 外掛,

(其他查到的還有像 globules-io/cordova-plugin-ios-xhr,但不太記得試驗結果)

cordova plugin add cordova-plugin-cors

 

安裝好後,重新編譯 Cordova app,

那些 Origin null is not allowed by Access-Control-Allow-Origin 的錯誤訊息就消失了,

App 也可以連上網路了~

 

PS: 不過有發現另一個問題,WKWebView 元件在新版的 iOS 上,

它的 Session cookie 似乎沒辦法在頁面與 Ajax 連線間共用,

以前我在 App 裡用 Ajax 登入了圖書館網站,

然後在 App 裡的 web view 元件開啟圖書館網站,會是已經登入的狀態。

但現在就會是未登入的狀態,也就是說 Ajax 的 session cookie 沒有與 web view 元件共享。

但這應該算是另一個問題,與 Origin null 或 CORS 應該不相干囉…

 

參考資料:

(本頁面已被瀏覽過 222 次)

3 thoughts on “[Cordova] App 在 iPhone 上出現 Origin null is not allowed by Access-Control-Allow-Origin 錯誤,無法連網

  1. 您好,想跟您請教一下,針對後續IOS系統更新後,怎麼去存取遠端網址的 Session 和 Cookie 呢? 這個問題一直困擾很久。不知道可否有比較好的處理方式呢?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料