事由
一个月前的某天,我打开电脑跑公司的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@ 操作系统 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 浏览器,我想应该没问题了。
如遇到了 错误,表现为不管打开什么网页和设置页都会弹出这个错误。 这种错误在注册表中 HKEY_LOCAL_MACHINESOFTWAREPoliciesGoogleChrome 下新建一条名为 RendererCodeIntegrityEnabled 值为 0 的 DWORD 键值对。 当然简单一点,编辑一个注册表文件导入;新建 STATUS_INVALID_IMAGE_HASH.reg 文件,添加以下内容 保存好,双击导入系统注册表,然后再重启92版本 Chrome 浏览器,我想应该没问题了。 不能检查更新?
哈哈,我想这不是一个问题吧,你既然选择了回退Chrome版本,或者说你已经拥有了两个版本的 Chrome 浏览器,这种错误无关重要。
哈哈,我想这不是一个问题吧,你既然选择了回退Chrome版本,或者说你已经拥有了两个版本的 Chrome 浏览器,这种错误无关重要。 还有其它问题?
抱歉,我想我只遇到了这一个问题,这番设置后,Chrome 浏览器可以正常使用、正常同步账号设置、正常安装扩展;
如有其它问题,自行Google解决下,可向我反馈,我将解决方法同步补录本文内容。
结语
以上,配置主针对于 Chrome 浏览器的跨域请求携带Cookies、以及SameSite配置,如果你有其它需求,我想可以修改相关配置来达到需求。
这是本文用到的所有文件,阿里云盘分享
另外,如有不当表达处,希望指正!
参阅: