為什麼會有那麼多Script Error錯誤

2021-09-24 07:23:04 字數 1689 閱讀 5981

錯誤監控作為開發日常的工作保證,但卻經常在錯誤平台看到的是這種莫明其妙,少得可憐的錯誤資訊,讓人無從下手

引出script error錯誤,是由於瀏覽器的同源策略,對於跨域的指令碼捕獲的錯誤,只會輸出如此簡短一句;

既然是同源策略,就祭出cors寶典,給js請求返回access-control-allow-origin: *,就可以解決了;

瀏覽器在同源策略限制下,出於安全上的考慮,頁面無許可權獲取異常詳情, 只輸出script error的錯誤資訊。

在 webkit 的原始碼裡可以看到script error的輸出過程,從下面的**看到,

canincludeerrordetails判斷origin請求頭是不是同源

dispatcherrorevent丟擲錯誤詳情,丟擲方式由上面的同源與否來決定

bool scriptexecutioncontext::dispatcherrorevent(const string& errormessage, int linenumber, int columnnumber, const string& sourceurl, jsc::exception* exception, cachedscript* cachedscript)

); else

errorevent = errorevent::create("script error."_s, , 0, 0, );

// other code }

// fixme: should this function be in securitycontext or securityorigin instead?

bool scriptexecutioncontext::canincludeerrordetails(cachedscript* script, const string& sourceurl)

return securityorigin()->canrequest(completeurl(sourceurl));

}複製**

其實很簡單,給js請求返回access-control-allow-origin: *,瀏覽器就能正常通過window.onerror來捕獲詳細的錯誤鳥~

nginx上的配置

location ~* \.js$ 

複製**

如何根據請求源,動態判斷要不要返回access-control-allow-origin

正常情況下,跨域js請求是不會傳送origin請求頭,我們在script標籤裡加上crossorigin屬性就可以使瀏覽器傳送了。 然後伺服器就可以根據origin頭部來判斷來者何人鳥

複製**

為什麼那麼多「偽需求」?

為什麼有那麼多 偽需求 做產品或做工具,經常碰到 偽需求 的問題,其實業界早有定論,使用者說不清楚自己的需求是什麼?有兩個流行的著名故事,第乙個故事,在汽車出現之前,福特去調研使用者,眾多使用者表示 我們需要一輛更快的馬車 第二個故事,大學城邊酒店林立,競爭激烈,其中一家的酒店老闆開始使用者調研,每...

為什麼華為加班那麼多

為什麼華為加班那麼多?十年前,pc機 個人電腦 的記憶體還是256k,512k為主流,再往前,記憶體就更小了。為了節省空間,編寫的程式都是很精練的。是否還記得有這樣一道演算法題 不用額外的變數,交換兩個變數的值。連乙個臨時變數的空間都節省了。現在的pc機記憶體已是4g,8g為主流了,伺服器的記憶體就...

為什麼存在那麼多光棍

調查物件 28歲 35歲的100名單身男女 男女各50名 學歷從中專至研究生 職業 公務員 教師 營業員 自由職業者 警察等。調查方式 發放問卷100份調查問卷 調查形式 街頭隨機調查 網路調查 調查 調查結論 50名被調查男性中,27 的人認為,自己沒有女朋友的原因是,現在的女孩都是 野蠻女友 她...