一個不相容的 JS 方法,讓你的網站發生崩潰
在開發前臺系統的過程中,遇到了一個很奇怪的問題:PC 端的請求都很正常,移動端瀏覽器的請求卻全部失敗,後來發現這是因為請求引數發生了丟失現象。
本文來源:魚立說。本文連結:https://www.yulisay.com/d/kobpr.html,支援微信瀏覽器開啟。
更多精彩文章,請移步 魚立說個人網站 翻看。歡迎欣賞,吐槽不足之處。
本文將圍繞 URL 查詢字串的序列化方法 URLSearchParams 展開內容,最終得出的結論是:在做相容多端網站開發時,需要謹慎使用 URLSearchParams 方法。
問題呈現
採用的是前後端分離模式,需要在前端頁面中對請求引數進行拼接,然後會向後端介面發出請求從而獲取資料。
在 PC 端結果很正常,在移動端瀏覽器中嘗試,發生瞭如下報錯,導致網站在移動端發生功能的全面崩潰:
分析問題
檢視 Ngin 請求日誌,發現很多下面的報錯:
[19/Jan/2021:11:44:58 +0800] "GET /api/method?a%2C123= HTTP/2.0" 403 ……
經過對 JS 中相關邏輯的排查,定位到,最初的方法如下:
obj2String: (obj) => {
let arr = [], index = 0;
for (let key in obj) {
arr[index++] = [key, obj[key]];
}
return new URLSearchParams(arr).toString();
}
解決問題
通過檢視 URLSearchParams 使用說明文件,發現它在瀏覽器相容性方面存在一些不足,如圖所示:
通過多次除錯,對 URL 查詢字串的拼接進行了優化處理,最終的方法如下:
obj2String: (obj) => {
let str = '';
for (let key in obj) {
if(str != '') str += '&';
str += key + "=" + obj[key];
}
return str;
}
此時,PC 端和移動端瀏覽器中恢復正常,網站也相容了多端的訪問。
擴充知識
querystring(查詢字串):NodeJS 自帶模組,用於解析和格式化 URL 查詢字串。
參考連結
相關文章
- GodBlessYou: 讓你的應用不再崩潰Go
- 分享一個開發中捕獲崩潰的庫
- 史上最坑爹的程式碼!個個讓人崩潰!
- 讓 Chrome 崩潰的一行 CSS 程式碼ChromeCSS
- WkWebView 令人崩潰的崩潰WebView
- 讓Web站點崩潰最常見的七大原因Web
- Qt程式繼承QApplication發生崩潰的原因QT繼承APP
- 讓程式設計師人崩潰的 99個瞬間...程式設計師
- 讓Google Chrome崩潰?只需16個位元組!GoChrome
- 大型網站如何防止崩潰,解決高併發帶來的問題網站
- 科比宣佈退役!恐怖影響力引發網站崩潰網站
- 讓谷歌愛上你的網站的14個方法–資料資訊圖谷歌網站
- 系統崩潰了,網站響應慢了,你是如何快速定位錯誤資訊的?網站
- 5個高質量的自學網站,每天堅持一小時,讓你受益一生!網站
- Web站點崩潰的原因總結(轉)Web
- 崩潰的一天,西安一碼通崩潰背後的技術問題。
- 神器 | 一個網站讓你找到高清 logo網站Go
- iOS開發的底線-崩潰iOS
- 101種讓你的網站更棒的方法網站
- 研招網崩了?網路崩潰的原因有哪些?怎麼維護網站?網站
- 伺服器站點崩潰的原因有哪些伺服器
- 一個足以讓私有云服務徹底崩潰的“小坑”-聊聊CMDB的資產審計
- 40 個讓你的網站更加友好的 jQuery 外掛網站jQuery
- 這個不起眼的“黑點”表情:讓所有安卓機秒崩潰安卓
- 能否讓APP永不崩潰—小光與我的對決APP
- app 崩潰的原因APP
- 如何讓你的網站排名靠前網站
- 讓人崩潰的程式碼,無法預測的結果
- 10個陷阱 讓你設計的網站“不專業”網站
- 記一次 .NET 某企業 ERP網站系統 崩潰分析網站
- 原來 CSS 這樣寫是會讓 app 崩潰的CSSAPP
- 這10個實用網站/app,至少讓你的效率翻一倍!網站APP
- [翻譯]Java排錯指南 - 5 確定崩潰何地發生Java
- 《崩潰製造》挑戰你的平臺遊戲天分遊戲
- 因為我的一個低階錯誤,生產資料庫崩潰了將近半個小時資料庫
- 【Azure Cloud Services】雲服務頻繁發生伺服器崩潰的排查方案Cloud伺服器
- 使用RecyclerView的兩個非傳統型崩潰View
- MottoJS,一個讓你的“座右銘”更好玩的JS外掛JS