在Chrome中停用相同的来源政策

Lan*_*uhn 1443 javascript ajax google-chrome

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

这是严格的开发,而不是生产用途.

ect*_*ype 1046

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

$ open -a Google\ Chrome --args --disable-web-security --user-data-dir
Run Code Online (Sandbox Code Playgroud)

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

对于Linux运行:

$ google-chrome --disable-web-security
Run Code Online (Sandbox Code Playgroud)

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

-–allow-file-access-from-files
Run Code Online (Sandbox Code Playgroud)

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

chrome.exe --disable-web-security
Run Code Online (Sandbox Code Playgroud)

这应该禁用相同的源策略,并允许您访问本地文件.

更新:对于Chrome 22+,系统会显示一条错误消息:

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

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

  • 显然现在`--disable-web-security`不起作用,除非你也明确地给出`--user-data-dir`.即OSX`/Applications/Google\Chrome.app/Contents/MacOS/Google\Chrome --disable-web-security --user-data-dir =〜/ ChromeUserData /`. (60认同)
  • @Sam确保您已关闭所有Chrome进程,然后重试.如果您已正确完成,Chrome将发出警告标题:"您使用的是不受支持的命令行标记: - disable-web-security.稳定性和安全性将受到影响" (23认同)
  • 您无需先关闭所有Chrome进程.你可以使用`open -n`.只需运行`open -n -a Google\Chrome --args --disable-web-security --user-data-dir =/tmp/chrome`.这将在您的Mac上打开第二个Chrome应用实例,您可以并排使用它们. (17认同)
  • 我必须在 `--user-data-dir` 之后添加一个路径,如 `--user-data-dir="tmp"` 才能工作(Chrome 88.0...) (9认同)
  • 刚刚在电脑上试过这个(镀铬29),我仍然得到这些可爱的Origin***是不允许的Access ... (6认同)
  • 如果您想要现有的用户目录,在 MacOS 上您可以在以下位置找到它:`--user-data-dir="/Users/<YOUR_USER>/Library/ApplicationSupport/Google/Chrome"`。在终端中输入“whoami”或“pwd -P”以查找您的用户名。 (3认同)
  • 有没有办法防止错误信息出现?我在没有键盘或鼠标的数字墙板上使用这个标志. (2认同)
  • 此解决方案在最新版本的Chrome上不再起作用。查看此错误报告-> https://bugs.chromium.org/p/chromium/issues/detail?id=840124 (2认同)

Dag*_*bit 974

关闭铬(或铬)并使用--disable-web-security参数重新启动.我刚刚对此进行了测试,并验证了我可以访问iframe的内容,其中src ="http://google.com"嵌入在"localhost"(在chrome 5/ubuntu下测试)的页面中.对我来说,确切的命令是:

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

chromium-browser --disable-web-security --user-data-dir="[some directory here]"
Run Code Online (Sandbox Code Playgroud)

浏览器会在第一次打开时警告您"您正在使用不受支持的命令行",您可以忽略它.

来自铬源:

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

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

chromium-browser --disable-web-security
Run Code Online (Sandbox Code Playgroud)

  • 如何在OS X上执行此操作? (110认同)
  • @ landon9720关闭Chrome,打开终端,输入`open/Applications/Google\Chrome.app --args --disable-web-security` (84认同)
  • 在Chrome 48和49中,还必须添加`--user-data-dir`. (16认同)
  • @ landon9720通过**ectype**查看答案. (13认同)
  • @Berty只需关闭chrome并在没有标签的情况下打开它.只有*使用该标签打开时,Chrome才会处于该模式* (8认同)
  • 从最新版本的 chrome 开始(例如我有版本 92),“--disable-web-security”是必要的,但还不够。还需要使用“--disable-site-isolation-trials”。请参阅下面@user2576266 的最新答案。(请注意,chrome 仍会显示一条警告,提示“--disable-site-isolation-trials”不被理解。它确实有效。) (8认同)
  • 这仍然有效,但在使用标志设置运行之前,必须关闭所有chrome实例. (6认同)
  • 对于 Chrome 版本 96 ,使用 `"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --disable-gpu --disable-features=IsolateOrigins,site-per -process --user-data-dir="C://ChromeDev"` ...只需添加 `--disable-features=IsolateOrigins,site-per-process` ,[参见此](https://peter. sh/experiments/chromium-command-line-switches/#disable-site-isolation-for-policy) (5认同)
  • 我怎样才能重新启用它?chrome.exe --enable-web-security不起作用^^ (4认同)
  • @MarekCzaplicki在版本55上,它要求你为--user-data-dir定义一个实际目录(--user-data-dir = <some directory>)一旦完成,这对我来说非常合适. (4认同)
  • 这似乎不再适用于最近的Chrome版本 (2认同)
  • 这似乎不适用于当前版本的chrome (2认同)
  • 为了防止其他人遇到同样的问题,我发现在此之前我已经完成了所有正在运行的chrome进程. (2认同)
  • 此解决方案在最新版本的Chrome上不再起作用。查看此错误报告-&gt; https://bugs.chromium.org/p/chromium/issues/detail?id=840124 (2认同)
  • 我确认它在Chrome 67中不再起作用。...目前,我已经安装了便携式版本的Chrome 66(https://portableapps.com/redirect/?a=GoogleChromePortable&amp;s=s&amp;p=&amp;d=sfpa&amp;f=GoogleChromePortable_66 .0.3359.181_online.paf.exe) (2认同)
  • 这不再起作用,请在此处评论错误提交:https://bugs.chromium.org/p/chromium/issues/detail?id=857032 (2认同)

Ola*_*son 487

对于Windows用户:

在我看来,此处接受的解决方案的问题是,如果您已经打开Chrome并尝试运行它,则无法运行.

但是,在研究这个时,我发现了一个关于超级用户的帖子,是否可以同时运行带有和不带网络安全的Chrome?.

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

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
Run Code Online (Sandbox Code Playgroud)

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

  • 太好了,谢谢.多亏了这个,我已经能够将一个网页作为一个独立的应用程序启动了"C:\ ..\chrome.exe"--disable-web-security --user-agent ="Android"--user-data -dir ="C:/ temp-chrome-eng"--app ="file:/// C:/apps/index.html"` (17认同)
  • 此命令在OSX中通过启动第二个实例起作用:`open -n -a/Applications/Google\Chrome.app --args --user-data-dir ="/ tmp/chrome_dev_session"--disable-web-security` (您可能需要先创建临时文件夹) (17认同)
  • 这是一种享受.它还保留了我正常的chrome实例,安全性已打开且运行正常.只要注意到它确实有效,Chrome会通知您"稳定性和安全性会受到影响". (4认同)
  • 正是在尝试对我本地计算机上的API进行开发时我需要的. (2认同)

GSB*_*GSB 131

对于Windows:

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

    chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security
    
    Run Code Online (Sandbox Code Playgroud)

对于Mac:

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

    open /Applications/Google\ Chrome.app --args --user-data-dir="/var/tmp/Chrome dev session" --disable-web-security
    
    Run Code Online (Sandbox Code Playgroud)

应打开一个新的Web安全禁用Chrome浏览器,并显示以下消息:

在此输入图像描述

  • @downvoters请提及downvote的原因,因为没有任何关于downvote的回答 (4认同)
  • 这是一个很好的答案,帮助我在 MAC 上启动第二个窗口并禁用网络安全。2022/12 (2认同)

Cob*_*urn 74

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

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

基本上它是一个小的切换开关来打开和关闭Allow-Access-Origin-Control检查.对我来说非常适合我正在做的事情.

编辑:我尝试使用另一天的另一个项目,它停止工作.卸载并重新安装扩展程序修复它(重置默认值).

编辑2:我再也无法让它始终如一地运作

  • @bryc这并不是真正意义上的.但请考虑您可以使用`--allow-file-access-from-files`而不是禁用所有Web安全性. (2认同)
  • “扩展名不再存在”您可以删除您的答案吗?或者至少将“编辑 3”以粗体显示在顶部 (2认同)

Ogn*_*rov 69

对于使用Chrome版本60.0.3112.78(解决方案经过测试和工作的那天)的Windows用户,至少到今天19.01.2019(版本71.0.3578.98).你并不需要关闭任何Chrome实例.

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

请注意不要使用这个特殊的浏览器进行浏览,因为你可能会被它搞砸!


Jia*_*hen 48

似乎以上解决方案都没有实际工作.本-禁用网络安全是近年来铬版本不再支持.

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

不确定为什么Chrome让开发人员的生活如此艰难.它阻止了所有可能的方法来禁用XSS安全检查,即使是完全没必要的开发使用.

经过几天的努力和研究,一个解决方案对我来说非常有效:使用corsproxy.这里有两个选项:1.使用corsproxy.com 2.在本地框中安装corsproxy:npm install -g corsproxy

[更新于2018年6月23日]最近我正在开发一个需要再次使用corsproxy的SPA应用程序.但似乎没有github上的corsproxy可以满足我的要求.

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

所以我决定使用nodejs开发自己的corsproxy版本.它实际上非常简单.我已经将它作为github上的要点发布了.这是源代码要点:https: //gist.github.com/jianwu/8e76eaec95d9b1300c59596fbfc21b10

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

  • 不正确..接受的答案中提到的方式对我有用..正如它所提到的,Chrome 49以后命令'chrome.exe --disable-web-security --user-data-dir'为我工作.. (4认同)
  • 在53+中,您需要实际提供一个与您的普通目录不同的唯一用户数据目录.这将为不安全的环境创建新的配置文件.--user-data-dir需要设置为等于某些东西,例如在上面的Olas回答中.如果你真的想要,你可以将它设置为与你的实际普通用户配置文件夹相同,但是这是非常不鼓励的,因为如果你在该模式下开始正常浏览,它会使你的正常配置文件对意外攻击开放. (4认同)
  • Chromium 53,--disable-web-security --user-data-dir对我不起作用 (2认同)

mol*_*oco 42

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

"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --disable-web-security
Run Code Online (Sandbox Code Playgroud)

(将'C:....\chrome.exe'更改为您的chrome所在的位置).

etvoilà:)

  • 不幸的是,这对我不起作用. (5认同)
  • @khoailang,您仍然可以使用该开关。该警告是Google对抗不安全之战的一部分(一件好事)。另外,从55+版本开始,您还需要使用--user-data-dir = &lt;此处的其他目录&gt;,因此Google不想让您将不安全的规则与常规配置文件混合使用。 (3认同)

Viv*_*nha 38

在Mac终端上试试这个命令 -

open -n -a "Google Chrome" --args --user-data-dir=/tmp/temp_chrome_user_data_dir http://localhost:8100/ --disable-web-security 
Run Code Online (Sandbox Code Playgroud)

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


eto*_*xin 35

我发现最好的方法是在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"
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @etoxin这个答案在最新版本的chrome中不再有效.你必须添加--disable-web-security --user-data-dir ="D:/ Chrome" (2认同)

Moh*_*leh 20

你可以使用这个名为"Allow-Control-Allow-Origin:*"的chrome插件......它使它变得简单而且工作得非常好. 在这里查看:*

Chrome扩展程序

  • 它将"evil.com"网站设为原点,看起来很可疑. (4认同)
  • 截至本评论发布之日,该功能不再可用。建议只使用标志路线。 (3认同)

小智 19

对于Selenium Webdriver,在这种情况下,您可以使用适当的参数(或"开关")让selenium启动Chrome.

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


use*_*266 16

使用当前最新的chrome版本(76.0.3809.132(正式版本)(64位)),使其在我的测试中起作用的唯一方法是使用以下标志启动chrome(将D:\ temp更改为您喜欢的方式) :

--disable-site-isolation-trials --disable-web-security --user-data-dir =“ D:\ temp”

在Windows中,单击开始按钮,然后复制并粘贴以下内容:

chrome.exe  --disable-site-isolation-trials --disable-web-security --user-data-dir="D:\temp"
Run Code Online (Sandbox Code Playgroud)

编辑:

-test-type
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 这是唯一对我有用的解决方案。我已经在 Windows 10 的 `run` 窗口上运行了这个 `chrome.exe --disable-site-isolation-trials --disable-web-security --user-data-dir="D:\temp"`。谢谢很多。 (7认同)
  • 我有版本 95,但添加 --disable-site-isolation-Trials 不起作用。有什么解决方法吗? (3认同)
  • 在我的例子中,添加 --disable-site-isolation-Trials 确实对我有帮助,Chrome v 75.0,Selenium Web 驱动程序,Java。谢谢! (2认同)
  • 它在 Linux 上适用于我,但需要稍作修改 `google-chrome --disable-site-isolation-trials --disable-web-security --user-data-dir="/tmp"` (2认同)

Sha*_*uti 15

  1. 创建一个新的快捷方式

创建新快捷方式


  1. 粘贴以下路径

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

粘贴路径


  1. 命名

Unsafe Chrome.exe

在此处输入图片说明


现在,您在桌面上有一个不安全的 Google Chrome 版本,可以使用它来调试前端应用程序,而不会出现任何 CORS 问题。

  • 这个对我有用 (2认同)

chh*_*yal 14

如果您在Linux上使用Google Chrome,则以下命令有效.

google-chrome  --disable-web-security
Run Code Online (Sandbox Code Playgroud)


Mal*_*lay 14

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

open -na Google\ Chrome --args --disable-web-security --user-data-dir=$HOME/profile-folder-name
Run Code Online (Sandbox Code Playgroud)

这将启动一个新的谷歌浏览器实例,顶部有警告。


gma*_*man 13

不要这样! 您正在向攻击开放帐户。完成此操作后,任何第三方网站都可以开始向其他网站(您已登录的网站)发出请求。

而是运行本地服务器。就像打开外壳/终端/命令行并键入一样简单

cd path/to/files
python -m SimpleHTTPServer
Run Code Online (Sandbox Code Playgroud)

然后将浏览器指向

http://localhost:8000
Run Code Online (Sandbox Code Playgroud)

如果发现它太慢,请考虑此解决方案

更新资料

对此答案不满意的人也应该在这里投票,对这个答案也要一致。不知道为什么我的答案如此之低,而这里的相同答案是投票最高的答案。

正在向攻击敞开大门。现在,您通过npm远程或本地包含在站点中的每个第三方脚本都可以上载数据或窃取凭据。您正在做不需要做的事情。建议的解决方案并不难,只需30秒,就不会让您遭受公开攻击。当更好的事情如此简单时,为什么选择让自己变得脆弱?

告诉人们禁用安全性就像告诉您的朋友不要打开前门和/或门垫下的钥匙一样。当然,赔率可能很低,但如果确实被盗,如果没有被迫入境的证明,他们可能会很难获得保险。同样,如果禁用安全性,则只不过是在禁用 安全性。当您可以简单地在不禁用安全性的情况下解决问题时,这样做是不负责任的。如果您不能因为禁用安全而被某些公司解雇,我会感到惊讶。

  • 这不会使“您的机器”受到攻击。恶意的JavaScript代码将无法在客户端计算机本身上做很多事情。但是,您将允许恶意JavaScript代码潜在地操纵您在其他网站(facebook / administrations / banks / ...)上的帐户。这当然并没有那么危险,但是完全不同。 (9认同)
  • 尽管如此,用户可能仍需要这样做。问题不在运行服务器。问题是在将CORS放入不需要更改的验收/生产服务器上之前先对其进行测试。修改主机文件也不起作用。 (2认同)
  • @JohnHardy,爸爸:“我女儿胳膊断了,我该怎么办?”,我:“带她去隔壁医院,否则会让情况变得更糟”。您:“因为您没有回答问题而投了反对票” (2认同)

Bru*_*uce 13

此Chrome插件适用于我: Allow-Control-Allow-Origin:* - Chrome网上应用店

  • 这个插件在我的浏览器中崩溃并开始破坏所有XHR的东西.谨慎使用. (5认同)
  • 该插件已从 Chrome 商店中删除 (2认同)

Mec*_*ode 9

chromium-browser --disable-web-security --user-data-dir=~/ChromeUserData/
Run Code Online (Sandbox Code Playgroud)


Sau*_*tel 9

仅适用于MAC用户

open -n -a /Applications/Google\ Chrome.app --args --user-data-dir="/tmp/someFolderName" --disable-web-security
Run Code Online (Sandbox Code Playgroud)


Pet*_*son 8

您只需使用此chrome扩展名Allow-Control-Allow-Origin即可

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


小智 8

在Windows 10上,以下内容将起作用.

<<path>>\chrome.exe --allow-file-access-from-files --allow-file-access --allow-cross-origin-auth-prompt
Run Code Online (Sandbox Code Playgroud)


guy*_*uya 7

关于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
Run Code Online (Sandbox Code Playgroud)

这个适用于Chrome Canary.Canary_CORS.bat

start "" "c:\Users\%USERNAME%\AppData\Local\Google\Chrome SxS\Application\chrome.exe" --user-data-dir="c:/_canary_dev" --disable-web-security
Run Code Online (Sandbox Code Playgroud)


San*_*ero 7

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

google-chrome  --user-data-dir=/tmp --disable-web-security
Run Code Online (Sandbox Code Playgroud)


Bra*_*lor 6

对于mac用户:

open -a "Google Chrome" --args --disable-web-security --user-data-dir
Run Code Online (Sandbox Code Playgroud)

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

open -a "Google Chrome" --args --disable-web-security
Run Code Online (Sandbox Code Playgroud)


den*_*ter 6

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

操作系统: open /Applications/Google\ Chrome.app --args --user-data-dir="/var/tmp/Chrome_dev_2" --disable-web-security --disable-site-isolation-trials


Suf*_*ari 6

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

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


Mow*_*zer 5

有一个名为CORS Toggle的Chrome扩展程序.

点击此处访问它并将其添加到Chrome.

添加后,将其切换到打开位置以允许跨域请求.


me_*_*str 5

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

nohup google-chrome --disable-web-security --user-data-dir='/tmp' &
Run Code Online (Sandbox Code Playgroud)