這幾天Hybrid應(yīng)用涉及到了幾個ajax請求,iOS是可以請求成功的盐固,把html頁面用safari打開也是可以請求成功荒给,但是Andriod死活不成功而是直接進入error方法,本來還以為是Andriod代碼配置的問題刁卜,后來才知道是跨域?qū)е碌闹镜纾缬騿栴}是在ajax側(cè)配置的。
那么問題來了蛔趴,為什么iOS在沒有進行跨域配置的情況下就直接請求成功了呢挑辆???
原因:因為在加載html界面時用的是UIWebView鱼蝉,這才是問題的關(guān)鍵洒嗤。
UIWebView是UIKit下內(nèi)置的瀏覽器控件,是渲染引擎和JS引擎的組合魁亦。系統(tǒng)自帶的Safari瀏覽器也是通過UIWebView實現(xiàn)渔隶。
最最關(guān)鍵的———UIWebViw是支持跨域的。洁奈。间唉。。利术。知道真相的我也是紅紅火火恍恍惚惚了终吼!
給我驚喜的不止這個,還有WKWebView這個小婊砸氯哮!
在WWDC 2014發(fā)布會上發(fā)布iOS 8中,apple公布了WebKit框架,這意味著OSX和IOS開發(fā)者將共用同樣的開發(fā)庫商佛,新改變可以提高開發(fā)者編寫的代碼的重復(fù)使用性喉钢。WebKit框架使用WKWebView來代替IOS的UIWebView和OSX的WebView,并且使用Nitro JavaScript引擎良姆,這意味著所有第三方瀏覽器運行JavaScript將會跟safari一樣快肠虽。
但是WebKit對跨域進行了安全檢查限制,不允許跨域玛追,所以要對不能跨域的鏈接單獨處理税课。
如果你還想了解更多關(guān)于UIWebView和WKWebView的話,可以看下這篇文章痊剖,寫的挺不錯:從UIWebView到WKWebView