在 Chrome 中禁用同一来源政策

有什么方法可以在 Google 的Chrome浏览器上禁用同源策略

答案

是的对于 OSX,打开终端并运行:

$ open -a Google\ Chrome --args --disable-web-security --user-data-dir

--OSX 上的 Chrome 49 + 需要 --user-data-dir

对于 Linux 运行:

$ google-chrome --disable-web-security

另外,如果您尝试出于开发目的(例如 AJAX 或 JSON)访问本地文件,也可以使用此标志。

-–allow-file-access-from-files

对于 Windows,请进入命令提示符并进入 Chrome.exe 所在的文件夹,然后键入

chrome.exe --disable-web-security

那应该禁用相同的原始策略,并允许您访问本地文件。

更新:对于 Chrome 22+,您将看到一条错误消息,内容为:

您正在使用不受支持的命令行标志:--disable-web-security。稳定性和安全性将受到损害。

但是,您可以在开发时忽略该消息。

关闭 chrome(或 Chrome),然后使用--disable-web-security参数重新启动。我刚刚对此进行了测试,并验证了是否可以访问 src =“http://google.com” 嵌入 iframe 的内容,该页面嵌入在 “本地主机” 提供的页面中(在 Chrome 5 / Ubuntu 下进行了测试)。对我来说,确切的命令是:

注意:在运行命令之前杀死所有 chrome 实例

chromium-browser --disable-web-security --user-data-dir="[some directory here]"

浏览器在第一次打开时会警告您 “您正在使用不受支持的命令行”,您可以将其忽略。

从铬源:

// Don't enforce the same-origin policy. (Used by people testing their sites.)
const wchar_t kDisableWebSecurity[] = L"disable-web-security";

在 Chrome 48 之前,您可以使用:

chromium-browser --disable-web-security

对于 Windows 用户:

我认为这里接受的解决方案的问题是,如果您已经打开 Chrome 并尝试运行它,它将无法正常工作。

但是,在研究此问题时,我遇到了有关 “超级用户” 的帖子, 是否可以同时运行带有和不带有 Web 安全功能的 Chrome?

基本上,通过运行以下命令(或使用该命令创建快捷方式并通过该命令打开 Chrome)

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

您可以在保持其他 “安全” 浏览器实例打开并正常运行的同时,打开一个新的 “不安全” Chrome 实例。 重要提示 :每次第二次打开窗口时,都删除 / 清除C:/Chrome dev session文件夹--disable-web-security无法正常工作。因此,您无法保存所做的更改,然后使用--disable-web-security其作为第二个不安全的 Chrome 实例再次打开。

对于Windows

  1. 打开开始菜单
  2. 键入Windows + R或打开 “运行”
  3. 执行以下命令:

    chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security

对于Mac

  1. 前往终端
  2. 执行以下命令:

    open /Applications/Google\ Chrome.app --args --user-data-dir="/var/tmp/Chrome dev session" --disable-web-security

新的停用了网络安全功能的 Chrome 浏览器应打开,并显示以下消息:

在此处输入图片说明

编辑 3:似乎扩展名不再存在...这些天通常是为了解决 CORS,我用单独的目录设置了另一个版本的 Chrome,或者我将 Firefox 与https://addons.mozilla.org/zh-CN/ firefox / addon / cors-everywhere /代替。

编辑 2:我不能再使它始终如一地工作。

编辑:我只是在另一天尝试使用另一天,它停止工作。卸载并重新安装扩展后,已对其进行了修复(以重置默认值)。

原始答案:

我不想重新启动 Chrome 并禁用我的网络安全性(因为我在开发时正在浏览),却偶然发现了该 Chrome 扩展程序。

Chrome 网上应用店允许 - 允许 - 允许来源:*
(https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=zh-CN)

基本上,这是一个小拨动开关,用于启用和禁用 Allow-Access-Origin-Control 检查。对于我的工作非常适合我。

对于使用Chrome 版本 60.0.3112.78(解决方案经过测试并正常工作的日期)且至少直到今天的 19.01.2019(版本 71.0.3578.98)的 Windows用户。你不需要关闭任何镀铬的实例。

  1. 在桌面上创建快捷方式
  2. 用鼠标右键单击快捷方式,然后单击属性
  3. 编辑目标属性
  4. 将其设置为“C:\ Program Files(x86)\ Google \ Chrome \ Application \ chrome.exe” --disable-web-security --user-data-dir =“C:/ ChromeDevSession”
  5. 启动 chrome 并忽略表示不支持 --disable-web-security 的消息!

请勿使用此特殊的浏览器实例进行浏览,因为您可能对此感到头疼!

似乎以上解决方案均未真正起作用。最新的 chrome 版本不再支持--disable-web-security

Allow-Control-Allow-Origin:*-chrome 扩展程序部分解决了该问题。仅当您的请求使用 GET 方法且没有自定义 HTTP 标头时,它才起作用。否则,chrome 将发送 OPTIONS HTTP 请求作为飞行前请求。如果服务器不支持 CORS,它将以 404 HTTP 状态代码响应。插件无法修改响应 HTTP 状态代码。因此 chrome 将拒绝此请求。 chrome 插件无法根据当前的 chrome 扩展 API 修改响应 HTTP 状态代码。而且,您也无法对 XHR 发起的请求进行重定向。

不确定 Chrome 为什么使开发人员的生活如此艰难。它阻止了所有可能的方式来禁用 XSS 安全检查,即使是出于开发目的,这也是完全不必要的。

经过几天的奋斗和研究,一种解决方案对我来说是完美的:使用corsproxy 。您在此处有两个选择:1. 使用 [ https://cors-anywhere.herokuapp.com/] 2. 在本地框中安装 corsproxy: npm install -g corsproxy

[2018 年 6 月 23 日更新]最近我正在开发一个 SPA 应用程序,需要再次使用 corsproxy。但是似乎 github 上的 corsproxy 都不能满足我的要求。

  • 出于安全原因,需要它在防火墙内运行。所以我不能使用https://cors-anywhere.herokuapp.com/
  • 它必须支持 https,因为 chrome 会阻止 https 页面中的非 https ajax 请求。
  • 我需要在 nodejs 上运行。我不想维护另一种语言堆栈。

因此,我决定使用 nodejs 开发自己的 corsproxy 版本。实际上非常简单。我已将其作为要点在 github 上发布。这是源代码要点: https : //gist.github.com/jianwu/8e76eaec95d9b1300c59596fbfc21b10

  • 它在纯 Node.js 代码中,没有任何其他依赖
  • 您可以在 http 和 https 模式下运行(通过在命令行中传递 https 端口号),要运行 https,您需要生成 cert 和 key 并将它们放在 webroot 目录中。
  • 它还用作静态文件服务器
  • 它还支持飞行前 OPTION 请求。

要启动 CORSProxy 服务器(http 端口 8080):节点 static_server.js 8080

访问代理: http:// host:8080 / http://www.somesite.com

对于 Windows ... 在桌面上创建 Chrome 快捷方式。
右键单击 > 属性 > 快捷方式
编辑 “目标” 路径:

"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --disable-web-security

(将 “C:.... \ chrome.exe” 更改为您的 Chrome 所在的位置)。

etvoilà:)

在 Mac 终端上尝试此命令 -

open -n -a "Google Chrome" --args --user-data-dir=/tmp/temp_chrome_user_data_dir http://localhost:8100/ --disable-web-security

它会打开另一个具有禁用安全性的 chrome 实例,并且不再存在 CORS 问题。另外,您不再需要关闭其他 Chrome 实例。将 localhost URL 更改为您的 URL。

我发现最好的方法是在 Windows 桌面上复制 Chrome 或 Chrome Canary 快捷方式。将该快捷方式重命名为 “NO CORS”,然后编辑该快捷方式的属性。

在目标中,将--disable-web-security --user-data-dir="D:/Chrome"到目标路径的末尾。

您的目标应如下所示:

更新:添加了新标志。

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="D:/Chrome"

在此处输入图片说明