在Chrome中禁用同源策略

有没有办法在Google的Chrome浏览器上禁用同源规则

3020708 次浏览

关闭chrome(或chromium)并使用--disable-web-security参数重新启动。我刚刚测试了这个并验证了我可以访问嵌入在从“localhost”提供的页面中的src=“http://google.com”的ifram的内容(在chromium 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";

在Chrome48之前,您可以使用:

chromium-browser --disable-web-security

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

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

--user-data-dir需要在OSX上Chrome49+

对于Linux运行:

$ google-chrome --disable-web-security

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

--allow-file-access-from-files

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

chrome.exe --disable-web-security

这应该会禁用同源策略并允许您访问本地文件。

更新时间:对于Chrome22+,您将看到一条错误消息,上面写着:

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

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

在这种情况下,您可以使用适当的参数(或“开关”)让Selenium启动Chrome。

 @driver = Selenium::WebDriver.for(:Chrome, {:detach => false,:switches => ["--disable-web-security"]})

如果您在Linux上使用GoogleChrome,请执行以下命令。

google-chrome  --disable-web-security

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

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

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

等等:)

对于Windows用户:

在我看来,这里接受的解决方案的问题是,如果您已经打开Chrome并尝试运行chrome.exe --disable-web-security命令,它将无法工作。

然而,在研究这个问题时,我遇到了一个关于超级用户的帖子,是否可以同时在有和没有Web安全的情况下运行Chrome?

基本上,您需要添加到命令并像这样运行它(或使用它创建一个快捷方式并通过它运行一个新的Chrome实例)

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

这将打开一个新的“不安全”Chrome实例,同时保持其他“安全”浏览器实例打开并正常工作。

这是通过在C:下创建一个新的文件夹/目录“Chromedev会话”来实现的,并告诉这个新的Chrome实例使用该文件夹/目录作为其用户和会话数据。因此,新实例与您的“正常”Chrome数据分离,您的书签和其他保存的数据在此实例中不可用。

备注:只有使用此方法打开的Chrome的第一个“new”实例才会生效,因此它只是第一个新Chrome窗口中的第一个选项卡。如果您关闭该实例,您可以再次使用相同的命令,例如本地应用程序或类似应用程序的任何书签仍然存在,因为它指向同一个文件夹。

如果您想运行多个“不安全”实例,每个实例都需要自己的文件夹/目录,因此您需要使用不同的文件夹名称再次运行he命令。然而,这也意味着每个不安全的实例都将与其他实例分开,因此任何书签或其他保存的用户或会话数据都不会跨实例可用。

在Windows PC上,使用旧版本的Chrome,该命令将适用于所有人。我把我的Chrome降级到26个版本,它奏效了。

编辑3:似乎扩展不再存在…现在通常为了绕过CORS,我使用单独的目录设置另一个版本的Chrome或我使用https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/的Firefox。

编辑2:我不能再让它持续工作了。

编辑:前几天我尝试在另一个项目中使用它,但它停止工作。卸载并重新安装扩展修复了它(重置默认值)。

原答复:

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

ChromeWeb Store Allow-Control-Allow-Origin:*
(https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en)

基本上,它是一个小切换开关,用于切换允许访问起源控制检查。

似乎上述解决方案都不起作用。最近的chrome版本不再支持--禁用-网络-安全

允许控制允许起源:*-chrome扩展部分解决了这个问题。只有当你的请求使用GET方法并且没有自定义的HTTP头时,它才有效。否则,chrome会发送OPTIONS HTTP请求作为飞行前请求。如果服务器不支持CORS,它将响应404 HTTP状态代码。插件无法修改响应HTTP状态代码。所以chrome会拒绝这个请求。chrome插件无法根据当前chrome扩展API修改响应HTTP状态代码。你也不能对XHR发起的请求进行重定向。

不知道为什么Chrome让开发人员的生活如此困难。它阻止了所有可能的禁用XSS安全检查的方法,即使对于完全不必要的开发用途也是如此。

经过几天的挣扎和研究,有一个解决方案非常适合我:使用cors代理。你有两个选择:1. use[https://cors-anywhere.herokuapp.com/]2.在本地框中安装cors代理:npm install-g cors代理

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

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

所以我决定用nodejs开发自己版本的cors代理。其实很简单。我已经把它作为要点发布在github上。这是源代码要点:https://gist.github.com/jianwu/8e76eaec95d9b1300c59596fbfc21b10

  • 它在普通的nodejs代码中,没有任何额外的依赖项
  • 您可以在超文本传输协议和https模式下运行(通过传递https端口在命令行中的数字),要运行https,您需要生成cert和键并将它们放在webroot目录中。
  • 它也用作静态文件服务器
  • 它还支持飞行前的OPTION请求。

要启动CORSProxy服务器(超文本传输协议端口8080):节点static_server.js8080

访问代理:超文本传输协议://host: 8080/http://www.somesite.com

您可以简单地使用这个chrome扩展允许-控制-允许-起源

只需单击扩展程序的图标即可根据需要打开或关闭启用跨资源共享

对于Windows:

(使用windows 8.1, chrome 44.0

首先,关闭谷歌浏览器。

然后,打开命令提示符并转到chrome.exe所在的文件夹。

( for me: 'chrome.exe' is here "C:\Program Files (x86)\Google\Chrome\Application".

所以我输入:cd C:\Program Files (x86)\Google\Chrome\Application

现在类型:chrome.exe --disable-web-security

将打开一个新的Chrome窗口。

在Windows 10上,以下操作将起作用。

<<path>>\chrome.exe --allow-file-access-from-files --allow-file-access --allow-cross-origin-auth-prompt

我发现最好的方法是在Windows桌面上复制Chrome或ChromeCanary快捷方式。将此快捷方式重命名为“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"

在此处输入图片描述

根据Ola Karlsson的回答,实际上最好的方法是在不同的会话中打开不安全的Chrome。这样您就不必担心关闭所有当前打开的选项卡,并且还可以继续使用原始Chrome会话安全地上网。

这些批处理文件应该只适用于您在Windows上。

将其放在Chrome_CORS.bat档案中以便于使用

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

这个是给Chrome金丝雀.Canary_CORS.bat

start "" "c:\Users\%USERNAME%\AppData\Local\Google\Chrome SxS\Application\chrome.exe" --user-data-dir="c:/_canary_dev" --disable-web-security
chromium-browser --disable-web-security --user-data-dir=~/ChromeUserData/

对于mac用户:

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

在Chrome48之前,您可以使用:

open -a "Google Chrome" --args --disable-web-security

有一个Chrome扩展称为CORS切换。

单击此处访问它并将其添加到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

新的Web安全禁用chrome浏览器应打开以下消息:

在此处输入图片描述

对于mac

如果你想打开新的Web安全实例禁用Chrome浏览器没有关闭现有的标签然后使用下面的命令

open -na Google\ Chrome --args --user-data-dir=/tmp/temporary-chrome-profile-dir --disable-web-security

它将打开Web安全禁用Chrome浏览器的新实例,如下所示

在此处输入图片描述

您可以使用这个名为“Allow-Control-Allow-Origin:*”的chrome插件……它使它变得非常简单并且工作得很好。点击这里:*

Chrome扩展

仅限MAC用户

open -n -a /Applications/Google\ Chrome.app --args --user-data-dir="/tmp/someFolderName" --disable-web-security

对于windows用户**Chrome版本60.0.3112.78(解决方案测试和工作的那一天),至少到今天24.11.2022(版本106.0.5249.119(官方版本)(64位))。您不要需要关闭任何chrome实例。

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

注意不要使用这个特殊的浏览器实例来浏览,因为你可能会被它入侵!

在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实例。将localhostURL更改为您的URL。

我有时会使用它,将localhost前端站点发布到localhost后端API(例如React to a old. NET API)。我在Windows 10桌面上创建了一个单独的快捷方式,以便它永远不会用于正常浏览,仅用于本地调试。我做了以下工作:-

  1. 右键点击桌面,添加新的快捷方式
  2. 将目标添加为"[PATH_TO_CHROME]\chrome.exe" --disable-web-security
  3. 单击OK。

你会得到一个警告加载这个浏览器,它是不安全的,只是照顾你的浏览器上。我倾向于重命名这个新的快捷方式在桌面上,在资本的东西,并将其从我的其他图标,所以它不能混淆正常Chrome。

希望这有帮助!

在Linux-Ubuntu上,要同时运行正常会话和不安全会话,请运行以下命令:

google-chrome  --user-data-dir=/tmp --disable-web-security

这是一个不断移动的目标……今天我需要添加另一个标志来使其工作:--disable-site-isolation-trials

OS X: /Applications/Google\Chrome.app--args--user-data-dir="/var/tmp/Chrome_dev_2"

使用最新的chrome版本103.0.5060.134(官方版本)(64位)

windows:单击开始按钮,然后复制粘贴以下内容(根据自己的喜好更改D:\temp<0><0><0><0>D:\temp):

chrome.exe  --disable-site-isolation-trials --disable-web-security --user-data-dir="D:\temp"

Linux:启动终端,然后运行以下命令(根据自己的喜好更改~/tmp目录)

google-chrome --disable-site-isolation-trials --disable-web-security --user-data-dir="~/tmp"

注意:此解决方案将在隔离的沙盒中启动Chrome,并且不会影响主Chrome配置文件。

尝试转到此页面并禁用您网站域的域安全策略。

chrome://net-internals/#hsts

Chrome的Allow-Control-Allow-Origin插件不起作用。这适用于MacOS

我将alias chrome='open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir --disable-web-security'作为别名添加到我的配置文件中。

其他命令将禁用我的其他扩展,这将启动您的正常chrome并禁用cors

对于OSX,从终端运行以下命令:

open -na Google\ Chrome --args --disable-web-security --user-data-dir=$HOME/profile-folder-name

这将启动一个新的GoogleChrome实例,并在顶部显示警告。

注意:如果您使用--user-data-dir,则chrome断开与您的用户数据文件夹的连接(并将您从所有站点注销)-即使您在没有任何参数的情况下再次运行它。要回滚此,您需要以上述方式打开,但没有那个praeter。

在Ubuntu中使用以下命令启动chrome(禁用同源策略并以分离模式打开chrome):

nohup google-chrome --disable-web-security --user-data-dir='/tmp' &
  1. 创建快捷方式

新建快捷方式


  1. 粘贴命令

cmd /c start chrome --disable-web-security --user-data-dir="c:\temp\chrome"


  1. 以管理员身份运行

禁用此标志是chrome-chrome://flags/#reduced-referrer-granularity它应该工作

仅适用于OSX Catalina,以下命令适用于我。

open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security