久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

Scripterror.全面解析

一些用戶向我們反饋,F(xiàn)undebug的JavaScript監(jiān)控插件抓到了很多Script error.,然后行號和列號都是0...這就很尷尬了。
Script error.全面解析
今天,我們來詳細(xì)地解析一下Script error.,后續(xù)我們還會深度測試并且提供解決方法。

十年的金川網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整金川建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“金川網(wǎng)站設(shè)計”,“金川網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

同源策略 (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是否同源的文件:Script error.全面解析

<style type="text/css">
code {
text-overflow:clip;/文本裁切/
white-space:nowrap;/強(qiáng)制不換行/
overflow:hidden;/溢出隱藏/
}
</style>

網(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:

假設(shè)你已經(jīng)成功登錄Gmail服務(wù)器,同時在同一個瀏覽器訪問惡意站點(diǎn)(另一個瀏覽器選項(xiàng)卡)。沒有同源策略,***者可以通過JavaScript獲取你的郵件以及其他敏感信息,比如說閱讀你的私密郵件,發(fā)送虛假郵件,看你的聊天記錄等等。 如果將Gmail替換為你的銀行帳戶,問題就大條了。

為啥出現(xiàn)Script error. ?

為了提升網(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腳本 &lt;script src="cbcc.com/index.html"&gt;,這段腳本指向你使用的某銀行網(wǎng)站首頁。雖然腳本會執(zhí)行失敗,但是錯誤信息卻有可能泄露你的信息。如果你已經(jīng)登錄過該銀行網(wǎng)站并且處于登錄狀態(tài),那么錯誤信息可能為'歡迎你 ....' is undefined;如果你沒有登錄,那么錯誤信息可能是'請登錄...' is undefined。 然后***就可以根據(jù)這些信息確定你使用的銀行網(wǎng)站,并且偽造一個釣魚網(wǎng)站來騙取錢財。

源碼

webkit源碼如下:

```c++
bool ScriptExecutionContext::dispatchErrorEvent(const String& errorMessage,
int lineNumber,
const String& sourceURL)
{
EventTarget* target = errorEventTarget();
if (!target)
return false;
...
if (securityOrigin()->canRequest(targetUrl)) {
message = errorMessage;
line = lineNumber;
sourceName = sourceURL;
} else {
message = "Script error.";
sourceName = String();
line = 0;
}
...
}


可知,瀏覽器會判斷所加載的資源url是否同源(`securityOrigin()->canRequest(targetUrl)`),如果不同源,則將錯誤消息隱藏,賦值為`Script error.`, 并且將行號設(shè)為0.

因此,如果我們從第三方CDN服務(wù)加載資源,如果出錯的話,那么我們將只能看到`Script error.`。

### 錯誤復(fù)現(xiàn)

我們用一個簡單的例子測試一下。下面是**index.html**,我們使用onerror來捕獲錯誤。

```html
<!DOCTYPE html>
<html>
<head>
    <title>Test Script error</title>
    <script type="text/javascript">
      window.onerror = function(errorMessage, scriptURI, lineNumber, columnNumber, error){
        console.log(errorMessage);
        console.log(scriptURI);
        console.log(lineNumber);
        console.log(columnNumber);
        console.log(error);
      }
    </script>
    <script type="text/javascript" src="./scripterror.js"></script>
</head>
<body>
</body>
</html>

scripterror.js中拋出一個Error對象:

throw new Error('Hello, Fundebug');

使用的http-server掛載文件,打開http://localhost:8080/index.html,

在Chrome瀏覽器控制臺下,可以看到詳細(xì)的出錯信息:Script error.全面解析

<div style="text-align: left;">
<img style="width:35.8%;" src="understand-script-error/script-error-ok.png" />
</div>

為了復(fù)現(xiàn)Scrpt error., 將scripterror.js放到我在coding.net的個人項(xiàng)目下面:

<!DOCTYPE html>
<html>
<head>
    <title>Test Script error</title>
    <script type="text/javascript">
      window.onerror = function(errorMessage, scriptURI, lineNumber, columnNumber, error){
        console.log(errorMessage);
        console.log(scriptURI);
        console.log(lineNumber);
        console.log(columnNumber);
        console.log(error);
      }
    </script>
    <script type="text/javascript" src="http://coding.net/u/stefanzan/p/stefanzan/git/raw/coding-pages/public/js/src/scripterror.js"></script>
</head>
<body>
</body>
</html>

運(yùn)行http-server, 結(jié)果如下:Script error.全面解析

<div style="text-align: left;">
<img style="width:35.8%;" src="understand-script-error/script-error-not-ok-chrome.png" />
</div>

因?yàn)檫`背同源策略,這時只能拿到Script error.。

總結(jié)

本文介紹了Script error.的由來,并提供了一個簡單的實(shí)例來演示什么情況下出現(xiàn)Script error.。接下來,我們將對Script error進(jìn)行深度測試并提出解決方法

關(guān)于Fundebug

Fundebug專注于JavaScript、微信小程序、微信小游戲、支付寶小程序、React Native、Node.js和Java實(shí)時BUG監(jiān)控。 自從2016年雙十一正式上線,F(xiàn)undebug累計處理了7億+錯誤事件,得到了Google、360、金山軟件、百姓網(wǎng)等眾多知名用戶的認(rèn)可。歡迎免費(fèi)試用!

Script error.全面解析

版權(quán)聲明

轉(zhuǎn)載時請注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2017/04/05/understand-script-error/

分享名稱:Scripterror.全面解析
本文鏈接:http://sd-ha.com/article20/jsjojo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站策劃企業(yè)網(wǎng)站制作、全網(wǎng)營銷推廣、建站公司品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司