更新2021-10-18
从 Chrome 95 开始,在 MacOS 和 Windows 上,--disable-site-isolation-trials
仍然是禁用网络安全的必需标志,因此下面看到的 Chrome 命令行参数仍然有效。 (Chrome 并未正式支持某些论点,因为它会警告您。)
要测试您是否已在禁用网络安全的情况下成功启动 Chrome,请运行以下代码段:网络安全测试在这篇文章的底部。
更新2020-04-30
从 Chrome 81 开始,必须通过both --disable-site-isolation-trials
和一个非空的配置文件路径--user-data-dir
为了--disable-web-security
生效:
# MacOS (in Terminal)
open -na Google\ Chrome --args --user-data-dir=/tmp/temporary-chrome-profile-dir --disable-web-security --disable-site-isolation-trials
# Windows (from "Run" dialog [Windows+R] or start menu in Windows 8+)
chrome.exe --user-data-dir=%TMP%\temporary-chrome-profile-dir --disable-web-security --disable-site-isolation-trials
(推测)Chrome 可能需要非空配置文件路径,以减轻在默认配置文件上禁用网络安全的情况下启动浏览器的高安全风险。看 --user-data-dir=
vs --user-data-dir=/some/path
欲了解更多详情,请参阅下文。
谢谢@Snæbjørn评论中的 Chrome 81 提示。
更新2020-03-06
从 Chrome 80(可能更早)开始,标志的组合--user-data-dir=/tmp/some-path --disable-web-security --disable-site-isolation-trials
不再禁用网络安全.
目前尚不清楚 Chromium 代码库何时回归,但下载了旧版本的 Chromium(以下Chromium 下载页面上的“不那么简单的步骤”)是我发现的唯一解决方法。我最终使用了版本 77.0.3865.0,它可以使用这些标志正确禁用网络安全。
原帖 2019-11-01
在 Chrome 67+ 中,需要通过--disable-site-isolation-trials
与参数一起标记--user-data-dir=
and --disable-web-security
真正禁用网络安全。
在 MacOS 上,完整命令变为:
open -na Google\ Chrome --args --user-data-dir= --disable-web-security --disable-site-isolation-trials
关于--user-data-dir
Per 大卫·艾米的回答,仍然需要指定--user-data-dir=
Chrome 尊重--disable-web-security
option.
--user-data-dir=
vs --user-data-dir=/some/path
虽然经过一条空路--user-data-dir=
与--disable-web-security
,出于安全目的,不建议这样做,因为它使用您的默认 Chrome 配置文件,该配置文件具有电子邮件等的活动登录会话。禁用 Chrome 安全性后,您的活动会话很容易受到其他浏览器内漏洞的攻击。
因此,建议为您的 Chrome 配置文件使用替代目录--user-data-dir=/tmp/chrome-sesh
或同等学历。归功于@James B在评论中指出这一点。
Source
此修复是在浏览器测试框架 Cypress 中发现的:https://github.com/cypress-io/cypress/issues/1951
网络安全测试
运行此代码片段以确认此解决方案实际上禁用了 Google Chrome 中的网络安全:
window.addEventListener("DOMContentLoaded", () => {
const iframe = document.querySelector("iframe");
iframe.addEventListener("load", () => {
const canAccessIframeDocument = !!iframe.contentDocument;
document
.querySelector(
canAccessIframeDocument ? ".security-disabled" : ".security-enabled"
)
.classList.remove("hidden");
});
// To ensure the `load` event always fires, only set iframe src after the
// event listener is attached.
iframe.src = "https://google.com";
});
body {
font-family: sans-serif;
}
.hidden {
display: none;
}
/* Web security should normally be enabled, so this is colored green, despite
the objective of this solution to disable it. */
.security-enabled {
font-weight: bold;
color: darkgreen;
}
.security-disabled {
font-weight: bold;
color: darkred;
}
<h1>Web Security Test</h1>
<p>
This test attempts to access the inner contents of a cross-origin iframe,
which is normally disallowed.
</p>
<p class="security-enabled hidden">
Web security is enabled. The cross-origin iframe document could not be
accessed.
</p>
<p class="security-disabled hidden">
Web security is disabled. The cross-origin iframe document was
successfully accessed.
</p>
<iframe class="hidden">
Iframes are not supported.
</iframe>