• 多版本 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 FilesGoogleChromeApplicationchrome.exe" --flag-switches-begin --flag-switches-end

    下载 Chrome 浏览器离线包

    首先,我们需要的是 Chrome 浏览器的 离线安装安装包,注意是离线安装包,大小约 60-80 MB;也可以看下载的安装包程序的图标分辨,离线安装包图标色彩不及在线安装包鲜艳。
    你可以去 Chrome Downloads 这个链接地址去下载,或者你也可自寻安全的链接下载。
    请注意检查下载文件的数字签名证书为 Google LLC,其它来源不排除恶意安装包的可能。

    解压文件和创建文件夹

    • 新建一个 Chrome 文件夹及在其下新建一个 App 子文件夹用于存放Chrome相关文件,如 D:Chrome 和 D:ChromeApp
    • 用 7z 打开安装包,就是 .exe 后缀的安装包,可以看到一层 chrome.7z 的一个压缩包,再打开它将其中文件将 Chrome-bin 文件夹整个复制到刚新建的App目录下,现在我们的 Chrome 可执行文件在 D:ChromeAppChrome-bin 下

    创建快捷方式及设置SameSite相关参数

    不用着急打开目录的 chrome.exe 可执行文件,我们还需要一点操作,有以下选择:

    • 使用快捷方式,在任意可以创建快捷方式的位置(你可以右键拖动 chrome.exe 快速新建快捷方式),新建快捷方式指向 D:ChromeAppChrome-binchrome.exe , 再右键快捷方式选择属性,在快捷方式TAB栏下目标输入框中追加如下内容

        --user-data-dir="D:Chrome92user-data" --disable-features=RendererCodelntegrity  --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure
      

      现在,完整的目录输入框内容是:

        D:Chrome92AppChrome-binchrome.exe --user-data-dir="D:Chrome92user-data" --disable-features=RendererCodelntegrity  --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure
      

      D:Chrome92user-data 目录为这个版本的 Chrome 浏览器用户数据,最好是自己指定一个目录,不要与现有版本的 Chrome 浏览器放置在一起,同时你需要重置,你可以直接删除 D:Chrome92user-data 这个文件夹即可。
      我想现在要是不出意外,你可以愉快地开发了,但如出现问题,请往以下内容查看。

    • 另一种方式使用批处理,但实际这种方法与创建快捷方式无异,你可以完全忽视。在任一位置新建一个 start.bat 批处理文件,文件名自定义,打开编辑添加以下内容:

        start  D:Chrome92AppChrome-binchrome.exe --user-data-dir="D:Chrome92user-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_MACHINESOFTWAREPoliciesGoogleChrome 下新建一条名为 RendererCodeIntegrityEnabled 值为 0 的 DWORD 键值对。
      当然简单一点,编辑一个注册表文件导入;新建 STATUS_INVALID_IMAGE_HASH.reg 文件,添加以下内容
        Windows Registry Editor Version 5.00
      
        [HKEY_LOCAL_MACHINESOFTWAREPoliciesGoogleChrome]
        "RendererCodeIntegrityEnabled"=dword:00000000
      
      保存好,双击导入系统注册表,然后再重启92版本 Chrome 浏览器,我想应该没问题了。
    • 不能检查更新?
      哈哈,我想这不是一个问题吧,你既然选择了回退Chrome版本,或者说你已经拥有了两个版本的 Chrome 浏览器,这种错误无关重要。
    • 还有其它问题?
      抱歉,我想我只遇到了这一个问题,这番设置后,Chrome 浏览器可以正常使用、正常同步账号设置、正常安装扩展;
      如有其它问题,自行Google解决下,可向我反馈,我将解决方法同步补录本文内容。

    结语

    以上,配置主针对于 Chrome 浏览器的跨域请求携带Cookies、以及SameSite配置,如果你有其它需求,我想可以修改相关配置来达到需求。
    这是本文用到的所有文件,阿里云盘分享
    另外,如有不当表达处,希望指正!

    参阅:

  • 相关阅读:
    G 面经 && Leetcode: Longest Repeating Character Replacement
    Leetcode: Reconstruct Original Digits from English
    Leetcode: Maximum XOR of Two Numbers in an Array
    Leetcode: Battleships in a Board
    Leetcode: Find All Anagrams in a String
    Leetcode: Pacific Atlantic Water Flow
    Leetcode: Partition Equal Subset Sum
    Leetcode: Third Maximum Number
    Leetcode: Arithmetic Slices
    Leetcode: Trapping Rain Water II
  • 原文地址:https://www.cnblogs.com/notfound/p/15406157.html
Copyright © 2020-2023  润新知