事由
一个月前的某天,我打开电脑跑公司的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 文件,添加以下内容
保存好,双击导入系统注册表,然后再重启92版本 Chrome 浏览器,我想应该没问题了。Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREPoliciesGoogleChrome] "RendererCodeIntegrityEnabled"=dword:00000000
- 不能检查更新?
哈哈,我想这不是一个问题吧,你既然选择了回退Chrome版本,或者说你已经拥有了两个版本的 Chrome 浏览器,这种错误无关重要。 - 还有其它问题?
抱歉,我想我只遇到了这一个问题,这番设置后,Chrome 浏览器可以正常使用、正常同步账号设置、正常安装扩展;
如有其它问题,自行Google解决下,可向我反馈,我将解决方法同步补录本文内容。
结语
以上,配置主针对于 Chrome 浏览器的跨域请求携带Cookies、以及SameSite配置,如果你有其它需求,我想可以修改相关配置来达到需求。
这是本文用到的所有文件,阿里云盘分享
另外,如有不当表达处,希望指正!