提问人:Landon Kuhn 提问时间:6/23/2010 最后编辑:Armen MichaeliLandon Kuhn 更新时间:10/19/2023 访问量:3361238
在 Chrome 中禁用同源策略
Disable same origin policy in Chrome
答:
关闭 chrome(或 chromium)并使用参数重新启动。我刚刚对此进行了测试,并验证我可以访问嵌入在“localhost”提供的页面中的 src=“http://google.com” 的 iframe 的内容(在 chromium 5 / ubuntu 下测试)。对我来说,确切的命令是:--disable-web-security
注意:在运行命令之前杀死所有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
评论
"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
是的。对于 OSX,打开终端并运行:
$ open -a Google\ Chrome --args --disable-web-security --user-data-dir
--user-data-dir 在 OSX 上的 Chrome 49+ 上是必需的
对于 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"
--user-data-dir="[PATH]"
--user-data-dir="/Users/<YOUR_USER>/Library/ApplicationSupport/Google/Chrome"
whoami
pwd -P
C:\Program Files\Google\Chrome\Application
- Chrome 在 Windows 上的默认安装路径(截至 2021 年 7 月)。
对于 Selenium Webdriver,在这种情况下,您可以让 selenium 使用适当的参数(或“开关”)启动 Chrome。
@driver = Selenium::WebDriver.for(:Chrome, {
:detach => false,
:switches => ["--disable-web-security"]
})
评论
如果您在 Linux 上使用 Google Chrome,则以下命令有效。
google-chrome --disable-web-security
对于 Windows...在桌面上创建 Chrome 快捷方式。
右键单击>属性>快捷方式
编辑“目标”路径:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --disable-web-security
(将“C:....\chrome.exe”更改为您的 chrome 所在的位置)。
et voilà :)
评论
对于Windows用户:
在我看来,这里接受的解决方案的问题在于,如果您已经打开了 Chrome 并尝试运行该命令,它将无法正常工作。chrome.exe --disable-web-security
但是,在研究这个问题时,我看到了一篇关于超级用户的帖子,是否可以同时运行有和没有网络安全的Chrome?
基本上,您需要添加到命令中并像这样运行它(或者使用它创建一个快捷方式并通过它运行一个新的 Chrome 实例)
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
这将打开一个新的“不安全”的 Chrome 实例,同时保持其他“安全”浏览器实例打开并正常工作。
这通过在 C: 下创建一个新的文件夹/目录“Chrome dev session”来工作,并告诉这个新的 Chrome 实例将该文件夹/目录用于其用户和会话数据。因此,新实例将与您的“正常”Chrome 数据分开,并且您的书签和其他已保存的数据将在此实例中不可用。
注意:只有使用此方法打开的第一个“新”Chrome实例才会受到影响,因此它只是第一个新Chrome窗口中的第一个选项卡,该实例会受到影响。 如果关闭该实例,则可以再次使用相同的命令,例如,本地应用或类似应用的任何书签仍将存在,因为它指向同一文件夹。
如果要运行多个“不安全”的实例,每个实例都需要自己的文件夹/目录,因此您需要使用不同的文件夹名称再次运行命令。然而,这也意味着每个不安全的实例都将与其他实例分开,因此任何书签或其他保存的用户或会话数据将无法跨实例使用。
评论
在 Windows PC 上,使用旧版本的 Chrome,该命令将适用于所有人。 我将我的 Chrome 降级到 26 版本,它起作用了。
评论
编辑3:似乎扩展不再存在...通常,为了绕过CORS,这些天我设置了另一个版本的Chrome,并设置了一个单独的目录,或者我使用带有 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 插件对我有用: Allow-Control-Allow-Origin: * - Chrome 网上应用店
评论
似乎上述解决方案实际上都不起作用。--disable-web-security 在最近的 chrome 版本中不再受支持。
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 页面中阻止 no-https ajax 请求。
- 我需要在nodejs上运行。我不想维护另一个语言堆栈。
所以我决定用nodejs开发我自己的corsproxy版本。这其实很简单。我已将其作为要点发布在 github 上。以下是源代码要点:https://gist.github.com/jianwu/8e76eaec95d9b1300c59596fbfc21b10
- 它采用普通的 nodejs 代码,没有任何额外的依赖项
- 您可以在 http 和 https 模式下运行(通过传递 https 端口 number),要运行 https,需要生成 cert 和 键并将它们放在 webroot 目录中。
- 它还用作静态文件服务器
- 它还支持预检 OPTION 请求。
要启动 CORSProxy 服务器(http 端口 8080): 节点static_server.js 8080
要访问代理,请执行以下操作: http://host:8080/http://www.somesite.com
评论
您可以简单地使用此 chrome 扩展程序 Allow-Control-Allow-Origin
只需单击扩展的图标,即可根据需要打开或关闭启用跨资源共享
评论
对于 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 或 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"
评论
按照 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 的。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
在 Chrome 48 之前,您可以使用:
open -a "Google Chrome" --args --disable-web-security
评论
有一个名为 CORS Toggle 的 Chrome 扩展程序。
添加后,将其切换到打开位置以允许跨域请求。
评论
对于 Windows:
打开开始菜单
键入 + 或打开“运行”windowsR
执行以下命令:
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 浏览器应打开并显示以下消息:
对于Mac
如果您想在不关闭现有选项卡的情况下打开禁用网络安全的 Chrome 浏览器的新实例,请使用以下命令
open -na Google\ Chrome --args --user-data-dir=/tmp/temporary-chrome-profile-dir --disable-web-security
它将打开禁用网络安全的Chrome浏览器的新实例,如下所示
评论
您可以使用这个名为“Allow-Control-Allow-Origin: *”的 chrome 插件......它使它变得非常简单并且运行良好。在这里查看: *
评论
仅适用于 MAC 用户
open -n -a /Applications/Google\ Chrome.app --args --user-data-dir="/tmp/someFolderName" --disable-web-security
评论
对于使用 **Chrome 版本 60.0.3112.78(解决方案测试和工作之日)的 Windows 用户,至少直到今天 24.11.2022(版本 106.0.5249.119(官方版本)(64 位))。您无需关闭任何 chrome 实例。
- 在桌面上创建快捷方式
- 右键单击快捷方式,然后单击“属性”
- 编辑 Target 属性
- 将其设置为“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” --disable-web-security --user-data-dir=“C:/ChromeDevSession”
- 启动 chrome 并忽略 --disable-web-security is not supported!
请注意不要使用此特定的浏览器实例进行浏览,因为您可能会被黑客入侵!
评论
在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 更改为 your 的 URL。
评论
open -n -a
"Google Chrome"
google-chrome
google-chrome --user-data-dir=/tmp/temp_chrome_user_data_dir http://localhost:8100/ --disable-web-security
/dev/null
我有时会使用它,将 localhost 前端站点发布到 localhost 后端 API(例如,对旧的 .NET API 做出反应)。我在 Windows 10 桌面上创建了一个单独的快捷方式,因此它永远不会用于正常浏览,而仅用于本地调试。我做了以下事情:-
- 右键单击桌面,添加新的快捷方式
- 将目标添加为
"[PATH_TO_CHROME]\chrome.exe" --disable-web-security
- 单击“确定”。
您将收到有关此浏览器加载的警告,指出它不安全,请注意浏览器的内容。我倾向于在桌面上重命名这个新的快捷方式,大写,并将其从我的其他图标中移开,这样它就不会与普通的 Chrome 混淆。
希望这有帮助!
在 Linux-Ubuntu 上,要同时运行正常会话和不安全会话,请运行以下命令:
google-chrome --user-data-dir=/tmp --disable-web-security
这是一个不断移动的目标......今天我需要添加另一个标志才能使其工作:--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
使用当前最新的 chrome 版本 118.0.5993.89(官方版本)(64 位)
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 配置文件。
评论
chrome.exe --disable-site-isolation-trials --disable-web-security --user-data-dir="D:\temp"
run
google-chrome --disable-site-isolation-trials --disable-web-security --user-data-dir="/tmp"
尝试转到此页面并禁用您网站域的域安全策略。
chrome://net-internals/#hsts
评论
Input a domain name to delete its dynamic domain security policies (HSTS and Expect-CT). (You cannot delete preloaded entries.):
Chrome 的 Allow-Control-Allow-Origin 插件不起作用。这适用于 MacOS
我已将 .profile 作为别名添加到我的 .profile 中。alias chrome='open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir --disable-web-security'
其他命令将禁用我的其他扩展程序,这将在禁用 cors 的情况下启动您的普通 chrome
评论
对于 OSX,请从终端运行以下命令:
open -na Google\ Chrome --args --disable-web-security --user-data-dir=$HOME/profile-folder-name
这将启动一个新的 Google Chrome 实例,并在顶部显示警告。
注意:如果您使用 chrome 断开与您的用户数据文件夹的连接(并从您的所有站点注销您) - 即使您在没有任何参数的情况下再次运行它。要回滚它,您需要以上述方式打开,但没有该 prameter。--user-data-dir
在 Ubuntu 中使用以下命令启动 chrome(禁用同源策略并在分离模式下打开 chrome):
nohup google-chrome --disable-web-security --user-data-dir='/tmp' &
- 创建快捷方式:
- 粘贴命令:
cmd /c start chrome --disable-web-security --user-data-dir="c:\temp\chrome"
- 以管理员身份运行
评论
禁用此标志是 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
在 Windows 中:
创建快捷方式并设置目标:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-site-isolation-trials --disable-web-security --user-data-dir="C:/ChromeDevSession"
我们可以覆盖网络响应标头,这是 Chrome113 开发工具中的一项新功能
打开“网络”选项卡,然后单击失败的请求。在 Response Headers 部分,搜索标头请求 Access-Control-Allow-Origin
,并将其设置为允许所有源 (*
)。
刷新页面,CORS的错误将消失,数据将被获取!
我们还可以通过单击“响应标头”部分中的“标头覆盖”来一次覆盖多个请求。并将“应用于
”属性设置为并重新加载页面。*.json
没有任何效果 - 但添加这个对我有用。app.use(cors());
简单地说,一旦你初始化就使用它。
const app = express();
app.use(cors());
从 Windows 的 chrome 浏览器中删除 Cors 起源问题。
单击“窗口”并搜索“运行”,打开“运行”应用后,将以下命令粘贴到“打开”上,然后单击“确定”。
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --disable-gpu --user-data-dir=~/chromeTemp
在运行此命令之前,请确保所有 chrome 浏览器都已关闭。
评论
peter.sh
--disable-web-security --user-data-dir