最初對(duì)做兼容性的認(rèn)知只停留在UI層面,但其實(shí)UI層面都還好,因?yàn)楫吘鼓憧梢灾苯涌吹靡?jiàn)現(xiàn)象,更為重要的是在JavaScript層面,因?yàn)檫@個(gè)部分涉及到功能性,前者最多是體驗(yàn)性的問(wèn)題。下面扯一下這幾天遇到的IE8相關(guān)的兼容性問(wèn)題。
1.所有$.ajax失效
剛開(kāi)始看到的現(xiàn)象是IE8/9頁(yè)面切到了留言頁(yè)面,沒(méi)有進(jìn)入正常流程。打開(kāi)fiddler都沒(méi)抓到請(qǐng)求,奇怪了,打出$.ajax error方法中的返回值。xhr.status的值都是0,原來(lái)請(qǐng)求沒(méi)有發(fā)出去。心想:怎么沒(méi)有發(fā)出去呢,難道是跨域問(wèn)題,不對(duì)啊,服務(wù)端已經(jīng)允許跨域了。后來(lái)一查(IE8/9下的跨域資源請(qǐng)求),原來(lái)請(qǐng)求被IE8/9阻止了,所以服務(wù)端允許跨域了也沒(méi)有用。當(dāng)時(shí)網(wǎng)上有兩種辦法,1個(gè)是設(shè)置瀏覽器,允許通過(guò)域訪問(wèn)數(shù)據(jù)源。2個(gè)是加入一個(gè)js插件,也就是讓IE8/9/10走IE自己支持的XDomainRequest發(fā)送請(qǐng)求。第一個(gè)方法只能玩玩,不可能讓用戶去操作套路那么深的步驟。第二個(gè)方法github上有兩套js。
<!--[if (IE 8)|(IE 9)]><script src="Js/jQuery.XDOmainRequest.js"></script><![endif]-->
加上去一看,請(qǐng)求發(fā)過(guò)去了,界面進(jìn)入了正常流程。but,又發(fā)現(xiàn)返回的值不對(duì),說(shuō)與服務(wù)端,服務(wù)端說(shuō)你的值沒(méi)傳過(guò)來(lái),怎么可能,代碼都沒(méi)動(dòng),原來(lái)這個(gè)XDomainRequest是參數(shù)走的header,先天性缺少contentType,沒(méi)有參數(shù)的請(qǐng)求返回是正確的,有參數(shù)的后臺(tái)就沒(méi)有讀到。又尋思著難道要后臺(tái)改代碼,支持一下這種方式?我遲疑了。然后就到群里和隊(duì)友們討論下。大家給出的方案就是,用Nginx配置個(gè)代理就好了。啊,一時(shí)激動(dòng)的有點(diǎn)難以言表。繞了一大圈,啥都不用改,服務(wù)器上配置下就好了。因?yàn)?,既然是跨域?wèn)題,最根本的方法就是讓它不用跨域了。這種前后端分離的架構(gòu),網(wǎng)站(html)和api都是不同的域名.
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26