簡體   English   中英

我在Chrome 77上的網站無法加載任何數據,但在Chrome 76上可以正常運行

[英]My website on Chrome 77 doesn't load any data, but it works fine on Chrome 76

更糟糕的是,我使用Chrome 77和Chromedriver 77通過了測試(測試通過了,數據已加載到網頁中,等等)。 只有當我手動啟動Chrome 77瀏覽器並對其進行測試時,它才會失敗。

這基本上是我的代碼正在做的事情:

// Get the query parameter "operation" from the URL
let match = new RegExp("[?&]operation=([^&]*)").exec(window.location.search);
let param = match && decodeURIComponent(match[1].replace(/\+/g, " "));

// Sanitize the URL from XSS Injection
let param = param ? window.DOMPurify.sanitize(param) : param;

if(param === "View") {
    // Load data from the server
}

問題是在Chrome 77 param === "View"是錯誤的! 但是單獨使用Chrome 77並非沒有錯。

我想到了! 問題是Chrome 77默認情況下會啟用TrustedTypes API。 但是,如果通過Chromedriver啟動Chrome 77,則會關閉該功能,這是一個非常討厭的錯誤

使Chrome 77 / Chromedriver 77像手動單擊頁面時一樣失敗的解決方法是啟用此chrome功能:

--enable-blink-features=TrustedDOMTypes

您將其放在--no-sandbox--disable-infobars

大! 現在,您的測試會按預期失敗。 接下來,要修復錯誤,請更改此行:

// Sanitize the URL from XSS Injection
let param = param ? window.DOMPurify.sanitize(param) : param;

為此:

// Sanitize the URL from XSS Injection
let param = param ? (window.DOMPurify.sanitize(param) || "").toString() : param;

toString()是最重要的部分。 現在將返回TrustedType對象,而不是String。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM