有什么方法可以禁用 Google 的 Chrome 浏览器上的 Same-origin policy?
peter.sh
页面,因此必须非常合法。
--disable-web-security --user-data-dir
关闭 chrome(或 chromium)并使用 --disable-web-security
参数重新启动。我刚刚对此进行了测试并验证了我可以访问嵌入在从“localhost”提供的页面中的 src="http://google.com" 的 iframe 的内容(在 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";
在 Chrome 48 之前,您可以使用:
chromium-browser --disable-web-security
是的。对于 OSX,打开终端并运行:
$ open -a Google\ Chrome --args --disable-web-security --user-data-dir
--user-data-dir required on Chrome 49+ on OSX
对于 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。稳定性和安全性将受到影响。
但是,您可以在开发时忽略该消息。
--user-data-dir
之后添加一条路径,就像在 --user-data-dir="tmp"
中一样,它才能正常工作(Chrome 88.0...)
--user-data-dir="[PATH]"
,否则将无法正常工作
--user-data-dir="/Users/<YOUR_USER>/Library/ApplicationSupport/Google/Chrome"
。在终端中输入 whoami
或 pwd -P
以查找您的用户名。
C:\Program Files\Google\Chrome\Application
- Windows 上 Chrome 的默认安装路径(截至 2021 年 7 月)。
对于 Windows 用户:
在我看来,这里接受的解决方案的问题是,如果您已经打开 Chrome 并尝试运行 chrome.exe --disable-web-security
命令,它将无法正常工作。
然而,在研究这个时,我发现了一个关于超级用户的帖子,Is it possible to run Chrome with and without web security at the same time?。
基本上,您需要添加到命令并像这样运行它(或使用它创建一个快捷方式并通过它运行一个新的 Chrome 实例)
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
这将在您保持其他“安全”浏览器实例打开并正常工作的同时打开一个新的“不安全”Chrome 实例。
这通过在 C: 下创建一个新的文件夹/目录“Chrome 开发会话”来工作,并告诉这个新的 Chrome 实例将该文件夹/目录用于其用户和会话数据。因此,新实例与您的“正常”Chrome 数据分离,您的书签和其他保存的数据在此实例中将不可用。
注意:仅使用此方法打开的第一个“新”Chrome 实例会受到影响,因此它只会影响第一个新 Chrome 窗口中的第一个选项卡。如果您关闭该实例,您可以再次使用相同的命令,例如,本地应用程序或类似应用程序的任何书签仍将存在,因为它指向同一个文件夹。
如果要运行多个“不安全”实例,每个实例都需要自己的文件夹/目录,因此您需要使用不同的文件夹名称再次运行该命令。然而,这也意味着每个不安全的实例都将与其他实例分开,因此任何书签或其他保存用户或会话数据将无法跨实例使用。
对于 Windows:
打开开始菜单 键入 windows+R 或打开“运行” 执行以下命令: chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security
对于 Mac:
转到终端执行以下命令: open /Applications/Google\ Chrome.app --args --user-data-dir="/var/tmp/Chrome dev session" --disable-web-security
一个新的禁用网络安全的 chrome 浏览器应该打开并显示以下消息:
https://i.stack.imgur.com/i6RZ5.png
对于 Mac
如果您想在不关闭现有选项卡的情况下打开禁用网络安全的 Chrome 浏览器的新实例,请使用以下命令
open -na Google\ Chrome --args --user-data-dir=/tmp/temporary-chrome-profile-dir --disable-web-security
它将打开禁用网络安全的 Chrome 浏览器的新实例,如下所示
https://i.stack.imgur.com/3QxAi.png
使用当前最新的 chrome 版本 103.0.5060.134 (Official Build) (64-bit)
windows:单击开始按钮,然后复制粘贴以下内容(将 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 配置文件。
run
窗口上运行此 chrome.exe --disable-site-isolation-trials --disable-web-security --user-data-dir="D:\temp"
。非常感谢。
google-chrome --disable-site-isolation-trials --disable-web-security --user-data-dir="/tmp"
对于使用 Chrome 版本 60.0.3112.78(该解决方案经过测试和工作的那一天)以及至少到今天 19.01.2019(版本 71.0.3578.98)的 Windows 用户。您不需要关闭任何 chrome 实例。
在桌面上创建快捷方式右键单击快捷方式并单击属性编辑目标属性将其设置为“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe”--disable-web-security- -user-data-dir="C:/ChromeDevSession" 启动 chrome 并忽略不支持 --disable-web-security 的消息!
请注意不要使用此特定的浏览器实例进行浏览,因为您可能会被它入侵!
编辑 3:似乎扩展程序不再存在... 通常为了绕过 CORS,这些天我set up another version of Chrome with a separate directory 或者我使用带有 https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/ 的 Firefox。
编辑 2:我不能再让它始终如一地工作。
编辑:前几天我尝试将另一个项目用于另一个项目,但它停止了工作。卸载并重新安装扩展修复它(重置默认值)。
原答案:
我不想重新启动 Chrome 并禁用我的网络安全(因为我在开发时正在浏览)并偶然发现了这个 Chrome 扩展。
基本上,它是一个用于打开和关闭 Allow-Access-Origin-Control 检查的小拨动开关。非常适合我正在做的事情。
--disable-web-security
开关。
--allow-file-access-from-files
而不是禁用所有网络安全。
似乎上述解决方案都没有真正起作用。最近的 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 日更新] 最近我正在开发一个需要再次使用 corsproxy 的 SPA 应用程序。但是似乎github上的corsproxy都不能满足我的要求。
出于安全原因,需要它在防火墙内运行。所以我不能使用 https://cors-anywhere.herokuapp.com/。
它必须支持 https,因为 chrome 会阻止 https 页面中的非 https ajax 请求。
我需要在 nodejs 上运行。我不想维护另一个语言堆栈。
所以我决定用 nodejs 开发我自己的 corsproxy 版本。其实很简单。我已将其作为要点发布在 github 上。以下是源代码要点:https://gist.github.com/jianwu/8e76eaec95d9b1300c59596fbfc21b10
它是纯 nodejs 代码,没有任何额外的依赖项
您可以在 http 和 https 模式下运行(通过在命令行中传递 https 端口号),要运行 https,您需要生成 cert 和 key 并将它们放在 webroot 目录中。
它还用作静态文件服务器
它也支持飞行前的 OPTION 请求。
启动 CORSProxy 服务器(http 端口 8080): node static_server.js 8080
访问代理:http://host:8080/http://www.somesite.com
在 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 快捷方式。右键单击>属性>快捷方式编辑“目标”路径:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --disable-web-security
(将“C:....\chrome.exe”更改为您的 chrome 所在的位置)。
等等瞧 :)
我发现最好的方法是在 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"
https://i.stack.imgur.com/PvMLm.png
创建快捷方式:
https://i.stack.imgur.com/7aXq7.png
粘贴命令:
cmd /c start chrome --disable-web-security --user-data-dir="c:\temp\chrome"
以管理员身份运行
不要这样做! You're opening your accounts to attacks。一旦您这样做,任何第 3 方站点都可以开始向您登录的其他网站(即您登录的站点)发出请求。
而是运行本地服务器。就像打开 shell/终端/命令行并输入一样简单
cd path/to/files
python -m SimpleHTTPServer
然后将浏览器指向
http://localhost:8000
如果您发现它太慢consider this solution
更新
对这个答案投反对票的人应该在这里和downvote this one too保持一致。不知道为什么我的答案如此被否决,而 here 上的相同答案是投票最多的答案。
你正在向攻击敞开心扉。您通过 npm 远程或本地包含在您的站点上的每个第三方脚本现在都可以上传您的数据或窃取您的凭据。你正在做一些你不需要做的事情。建议的解决方案并不难,需要 30 秒,不会让你打开攻击。当更好的事情如此简单时,你为什么要选择让自己变得脆弱?
告诉人们禁用安全性就像告诉你的朋友让他们的前门没有上锁和/或把钥匙放在门垫下面。当然几率可能很低,但如果他们真的被盗,没有强行进入的证据,他们可能很难获得保险。同样,如果您禁用安全性,您只是在禁用安全性。当您可以在不禁用安全性的情况下如此简单地解决问题时,这样做是不负责任的。如果您不能因为某些公司禁用安全性而被解雇,我会感到惊讶。
对于 Selenium Webdriver,在这种情况下,您可以让 selenium 使用适当的参数(或“开关”)启动 Chrome。
@driver = Selenium::WebDriver.for(:Chrome, {
:detach => false,
:switches => ["--disable-web-security"]
})
您可以使用这个名为“Allow-Control-Allow-Origin:*”的 chrome 插件......它使它变得非常简单并且工作得很好。 check it here: *
https://i.stack.imgur.com/f8wap.png
对于 OSX,从终端运行以下命令:
open -na Google\ Chrome --args --disable-web-security --user-data-dir=$HOME/profile-folder-name
这将启动一个新的 Google Chrome 实例,并在顶部显示警告。
注意:如果您使用 --user-data-dir
,则 chrome 会与您的用户数据文件夹断开连接(并从您的所有站点中注销)——即使您在没有任何参数的情况下再次运行它。要回滚它,您需要以上述方式打开但没有该参数。
您可以简单地使用这个 chrome 扩展程序 Allow-Control-Allow-Origin
只需单击扩展的图标即可根据需要打开或关闭启用跨资源共享
如果您在 Linux 上使用 Google Chrome,则以下命令有效。
google-chrome --disable-web-security
这个 Chrome 插件适用于我:Allow-Control-Allow-Origin: * - Chrome Web Store
仅适用于 MAC 用户
open -n -a /Applications/Google\ Chrome.app --args --user-data-dir="/tmp/someFolderName" --disable-web-security
在 Linux-Ubuntu 上,要同时运行正常会话和不安全会话,请运行以下命令:
google-chrome --user-data-dir=/tmp --disable-web-security
按照 Ola Karlsson 的回答,确实最好的方法是在不同的会话中打开不安全的 Chrome。这样您就无需担心关闭所有当前打开的标签页,还可以继续使用原始 Chrome 会话安全地上网。
这些批处理文件应该只适用于 Windows。
将其放在 Chrome_CORS.bat file 中以方便使用
start "" "c:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir="c:/_chrome_dev" --disable-web-security
这个适用于 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
chromium-browser --disable-web-security --user-data-dir=~/ChromeUserData/
在 Windows 10 上,以下将起作用。
<<path>>\chrome.exe --allow-file-access-from-files --allow-file-access --allow-cross-origin-auth-prompt
这是一个不断变化的目标......今天我需要添加另一个标志来让它工作:--disable-site-isolation-trials
OS X:open /Applications/Google\ Chrome.app --args --user-data-dir="/var/tmp/Chrome_dev_2" --disable-web-security --disable-site-isolation-trials
对于 mac 用户:
open -a "Google Chrome" --args --disable-web-security --user-data-dir
在 Chrome 48 之前,您可以使用:
open -a "Google Chrome" --args --disable-web-security
有一个名为 CORS Toggle 的 Chrome 扩展程序。
Click here to access it and add it to Chrome。
添加后,将其切换到开启位置以允许跨域请求。
在 Ubuntu 中使用以下命令启动 chrome(禁用同源策略并以分离模式打开 chrome):
nohup google-chrome --disable-web-security --user-data-dir='/tmp' &
对于 Windows:
(使用 Windows 8.1,铬 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 窗口。
以下命令仅适用于 OSX Catalina。
open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security
不定期副业成功案例分享
"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
, See this