在項目中用過幾回jiaThis了,使用的是自定義的模式,前面幾回都沒有發現什麼問題,可是此次卻出現一個很奇葩的問題。linux
問題背景:使用jiaThis自定義分享,在本地測試時,全部分享均正常,可是放到linux服務器上後,新浪微博和微信分享仍正常,可是QQ空間分享卻出現了問題,打開分享到QQ空間的連接,發現沒法加載接口內容。瀏覽器
被分享連接:http://192.168.141.22/#/index/assess/publicQuestion?engId=vdt_zonghezheng&type=DJK_STJK服務器
分享後顯示的連接:http://192.168.141.22/#/index/assess/publicQuestion?engId=jianzhouyanzice&type=DJK_STJK微信
最終在瀏覽器中打開的分享連接:http://192.168.141.22/#/index/assess/publicQuestion?engId=jianzhouyanzice&%3Btype=DJK_STJK測試
問題分析:通過上面的對比就能發現,url在分享到QQ空間時,url中的&符號被轉義成了‘&’,最終在瀏覽器中打開時,瀏覽器又將‘&’中的‘;’編碼成了‘%3B’,這就致使了頁面代碼沒法獲取到本來在‘&’後面的參數,而這個參數就是頁面中接口請求的主要參數,所以就形成了頁面請求接口失敗。編碼
解決方法:因爲jiaThis的源碼是通過加密壓縮的,我沒法經過jiaThis源碼來肯定致使這一問題的具體緣由,也沒法經過修改源碼來解決這一問題,所以我只能採用修改本地代碼的方式來解決這一問題。具體的作法是:在這一頁面的js開始就獲取‘&’後面的參數,若可以獲取到,則說明url正常,不作任何處理;若獲取不到,說明url被轉義了,就手動將url進行反轉義,而後經過重定向再次跳轉頁面,最終解決問題。加密
PS:目前的解決方法,不用說都有不少的侷限性,但由於項目趕時間,並且之前用的也是jiaThis組件,所以此次不得不採用這種很是極端的作法。如有大神也遇到過這類問題,而且完美的解決了這個問題,但願你留下寶貴的解決方案,提早感謝!url