多版本 Chrome 瀏覽器並存-Windows系統
事由
一個月前的某天,我開啟電腦跑公司的CMS專案,發現本地除錯時一直重定向SSO登入頁,這導致我不能進行本地除錯;因為我司使用sso統一登入的Cookies資訊驗證,chrome://version 查看了下版本號為94,查閱了最新的 Chrome updates 時,發現了以下資訊:
Latest update: Mar 18, 2021: The flags #same-site-by-default-cookies and #cookies-without-same-site-must-be-secure have been removed from chrome://flags as of Chrome 91, as the behavior is now enabled by default. In Chrome 94, the command-line flag --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure will be removed.
chrome://flges 移除 SameSite 設定,啟動引數 command-line flag 也移除了相關配置,所以我在92版本 Chrome 瀏覽器上可以正常使用的啟動引數及一系列配置都失效。
這將意味著我不能再跨域請求時攜帶Cookies資訊去進行身份驗證,而且我瀏覽了大量文章,並未有能滿意的解決方案,大多指向回退版本這一方案;雖然說用 Firefox 瀏覽器不影響,但我還是更喜歡用 Chrome 瀏覽器多一點。
那麼現在問題來了,我並不想回退版本,還想全新最新的 Chrome 瀏覽器,那就只能是保留多個版本的 Chrome 瀏覽器,以下是我查閱文章後調整的文章分享。
系統環境
-
Windows 規格
版本 Windows 10 專業版 版本號 1909 作業系統版本 18363.592
-
已安裝 Chrome 瀏覽器版本
Google Chrome 94.0.4606.81 (正式版本) (64 位) (cohort: Stable) 修訂版本 5a03c5f1033171d5ee1671d219a59e29cf75e054-refs/branch-heads/4606@{#1320} 作業系統 Windows 8 Version 1909 (Build 9200.592) JavaScript V8 9.4.146.21 使用者代理 Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 命令列 "C:\Program Files\Google\Chrome\Application\chrome.exe" --flag-switches-begin --flag-switches-end
下載 Chrome 瀏覽器離線包
首先,我們需要的是 Chrome 瀏覽器的 離線安裝安裝包,注意是離線安裝包,大小約 60-80 MB;也可以看下載的安裝包程式的圖示分辨,離線安裝包圖示色彩不及線上安裝包鮮豔。
你可以去 Chrome Downloads 這個連結地址去下載,或者你也可自尋安全的連結下載。
請注意檢查下載檔案的數字簽名證書為 Google LLC,其它來源不排除惡意安裝包的可能。
解壓檔案和建立資料夾
- 新建一個 Chrome 資料夾及在其下新建一個 App 子資料夾用於存放Chrome相關檔案,如 D:\Chrome\ 和 D:\Chrome\App
- 用 7z 開啟安裝包,就是 .exe 字尾的安裝包,可以看到一層 chrome.7z 的一個壓縮包,再開啟它將其中檔案將 Chrome-bin 資料夾整個複製到剛新建的App目錄下,現在我們的 Chrome 可執行檔案在 D:\Chrome\App\Chrome-bin\ 下
建立快捷方式及設定SameSite相關引數
不用著急開啟目錄的 chrome.exe 可執行檔案,我們還需要一點操作,有以下選擇:
1.使用快捷方式,在任意可以建立快捷方式的位置(你可以右鍵拖動 chrome.exe 快速新建快捷方式),新建快捷方式指向 D:\Chrome\App\Chrome-bin\chrome.exe , 再右鍵快捷方式選擇屬性,在快捷方式TAB欄下目標輸入框中追加如下內容
--user-data-dir="D:\Chrome\92\user-data" --disable-features=RendererCodelntegrity --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure
現在,完整的目錄輸入框內容是:
D:\Chrome\92\App\Chrome-bin\chrome.exe --user-data-dir="D:\Chrome\92\user-data" --disable-features=RendererCodelntegrity --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure
D:\Chrome\92\user-data 目錄為這個版本的 Chrome 瀏覽器使用者資料,最好是自己指定一個目錄,不要與現有版本的 Chrome 瀏覽器放置在一起,同時你需要重置,你可以直接刪除 D:\Chrome\92\user-data 這個資料夾即可。
我想現在要是不出意外,你可以愉快地開發了,但如出現問題,請往以下內容檢視。
2.另一種方式使用批處理,但實際這種方法與建立快捷方式無異,你可以完全忽視。在任一位置新建一個 start.bat 批處理檔案,檔名自定義,開啟編輯新增以下內容:
start D:\Chrome\92\App\Chrome-bin\chrome.exe --user-data-dir="D:\Chrome\92\user-data" --disable-features=RendererCodelntegrity --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure
我想,你也看到了,這種與上述方法無異,只是換個姿勢。你可以換個唯一的名稱,如 start-92.bat ,放在系統環境變數 Path 下,這樣你可以在命令列輸入 start-92 來啟動版本92的 Chrome 瀏覽器了。
出現的問題
但是,但是,如果你遇到了問題,不要慌。
- 喔唷,崩潰啦! STATUS_INVALID_IMAGE_HASH
如遇到了 STATUS_INVALID_IMAGE_HASH 錯誤,表現為不管開啟什麼網頁和設定頁都會彈出這個錯誤。
這種錯誤在登錄檔中 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome 下新建一條名為 RendererCodeIntegrityEnabled 值為 0 的 DWORD 鍵值對。
當然簡單一點,編輯一個登錄檔檔案匯入;新建 STATUS_INVALID_IMAGE_HASH.reg 檔案,新增以下內容
儲存好,雙擊匯入系統登錄檔,然後再重啟92版本 Chrome 瀏覽器,我想應該沒問題了。Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome] "RendererCodeIntegrityEnabled"=dword:00000000
- 不能檢查更新?
哈哈,我想這不是一個問題吧,你既然選擇了回退Chrome版本,或者說你已經擁有了兩個版本的 Chrome 瀏覽器,這種錯誤無關重要。 - 還有其它問題?
抱歉,我想我只遇到了這一個問題,這番設定後,Chrome 瀏覽器可以正常使用、正常同步賬號設定、正常安裝擴充套件;
如有其它問題,自行Google解決下,可向我反饋,我將解決方法同步補錄本文內容。
結語
以上,配置主針對於 Chrome 瀏覽器的跨域請求攜帶Cookies、以及SameSite配置,如果你有其它需求,我想可以修改相關配置來達到需求。
另外,如有不當表達處,希望指正!