摘要:同源策略解釋之前,我們先簡單聊聊同源策略。當(dāng)這些從第三方加載的腳本執(zhí)行出錯,因?yàn)檫`背了同源策略為了保證用戶信息不被泄露,錯誤信息不會顯示出來,取而代之只會返回一個。
一些用戶向我們反饋,F(xiàn)undebug的JavaScript監(jiān)控插件抓到了很多Script error.,然后行號和列號都是0...這就很尷尬了。
今天,我們來詳細(xì)地解析一下Script error.,后續(xù)我們還會深度測試并且提供解決方法。
同源策略 (Same origin policy)解釋Script error.之前,我們先簡單聊聊同源策略。摘自MDN - Same-origin policy:
Two pages have the same origin if the protocol, port (if one is specified), and host are the same for both pages.
所謂同源,就是指兩個頁面具有相同的協(xié)議、端口和主機(jī)(域名)。通過第三方加載的JavaScript腳本是不同源的。下面的表格簡單列出了和https://fundebug.com/app.js是否同源的文件:
網(wǎng)址 | 是否同源 | 原因 |
---|---|---|
https://fundebug.com/vendor.js | 是 | |
http://fundebug.com/vendor.js | 否 | 協(xié)議不同 |
https://fundebug.com:8001/app.js | 否 | 端口不同 |
https://docs.fundebug.com/nav.js | 否 | 子域名不同 |
https://kiwenlau.com/totop.js | 否 | 域名不同 |
沒有同源策略的話,將會怎樣?摘自同源策略詳解及繞過 - FreeBuf:
為啥出現(xiàn)Script error. ?假設(shè)你已經(jīng)成功登錄Gmail服務(wù)器,同時在同一個瀏覽器訪問惡意站點(diǎn)(另一個瀏覽器選項卡)。沒有同源策略,攻擊者可以通過JavaScript獲取你的郵件以及其他敏感信息,比如說閱讀你的私密郵件,發(fā)送虛假郵件,看你的聊天記錄等等。 如果將Gmail替換為你的銀行帳戶,問題就大條了。
為了提升網(wǎng)站的訪問速度,我們通常都會將靜態(tài)資源文件(css, image, javascript)放在第三方CDN。當(dāng)這些從第三方加載的JavaScript腳本執(zhí)行出錯,因?yàn)檫`背了同源策略, 為了保證用戶信息不被泄露,錯誤信息不會顯示出來,取而代之只會返回一個Script error.。
暴露錯誤信息會怎樣呢?摘自(Cryptic “Script Error.” reported in Javascript in Chrome and Firefox):
假想你不小心訪問了一個惡意網(wǎng)站,網(wǎng)頁里面偷偷放入了一段JavaScript腳本