有没有办法在Google的Chrome浏览器上禁用Same-origin policy?
这是严格的开发,而不是 生产环境 用途 .
对于 Windows :
打开开始菜单
键入windows R或打开"Run"
执行以下命令:
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
应打开一个新的Web安全禁用Chrome浏览器,并显示以下消息:
我不想重新启动Chrome并禁用我的网络安全性(因为我在开发时正在浏览)并且偶然发现了这个Chrome扩展程序 .
Chrome Web Store Allow-Control-Allow-Origin: * (https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en)
基本上它是一个小的切换开关来打开和关闭Allow-Access-Origin-Control检查 . 对我来说非常适合我正在做的事情 .
编辑:我尝试使用另一天的另一个项目,它停止工作 . 卸载并重新安装扩展程序修复它(重置默认值) .
在Windows 10上,以下内容将起作用 .
<<path>>\chrome.exe --allow-file-access-from-files --allow-file-access --allow-cross-origin-auth-prompt
我有时使用它来将localhost前端站点发布到localhost后端API(例如,React到旧的.NET API) . 我在Windows 10桌面上创建了一个单独的快捷方式,因此它永远不会用于正常浏览,仅用于本地调试 . 我做了以下事情: -
右键单击桌面,添加新的快捷方式
将目标添加为 "[PATH_TO_CHROME]\chrome.exe" --disable-web-security
"[PATH_TO_CHROME]\chrome.exe" --disable-web-security
单击“确定” .
您将收到有关此浏览器加载的警告,它不安全,只需要注意浏览器上的浏览器 . 我倾向于在桌面上重命名这个新的快捷方式,这是大写的东西,并且远离我的其他图标,所以它不能与普通的Chrome混淆 .
希望这可以帮助!
Don't do this! You're opening your accounts to attacks . 执行此操作后,任何第三方站点都可以开始向您登录的其他网站发送请求 .
而是运行本地服务器 . 它就像打开shell /终端/命令行并输入一样简单
cd path/to/files python -m SimpleHTTPServer
然后将浏览器指向
http://localhost:8000
如果你发现它太慢consider this solution
如果您在Linux上使用Google Chrome,则以下命令有效 .
google-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实例 . 将localhost URL更改为您的URL .
似乎以上解决方案都没有实际工作 . 最近的chrome版本不再支持 --disable-web-security .
Allow-Control-Allow-Origin: * - chrome extension 部分解决了这个问题 . 仅当您的请求使用GET方法并且_支持CORS时,它才会起作用,它将使用404 HTTP状态代码进行响应 . 该插件无法使用chrome插件根据当前的chrome扩展API修改响应HTTP状态代码 . 并且您也无法对XHR发起的请求进行重定向 .
不确定为什么Chrome让开发人员的生活如此艰难 . 它阻止了所有可能的方法来禁用XSS安全检查,即使是完全没必要的开发使用 .
经过几天的努力和研究,一个解决方案对我来说非常有效:使用 corsproxy . 这里有两个选项:1 . 使用corsproxy.com 2.在本地框中安装corsproxy: npm install -g corsproxy
[Updated on Jun 23, 2018] 最近我正在开发一个需要再次使用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端口号),运行https,您需要生成证书和密钥并放入webroot目录 .
它还充当静态文件服务器
它也支持飞行前OPTION请求 .
对于Selenium Webdriver,在这种情况下,您可以让selenium使用适当的参数(或"switches")启动Chrome .
@driver = Selenium::WebDriver.for(:Chrome, { :detach => false, :switches => ["--disable-web-security"] })
对于mac用户:
open -a "Google Chrome" --args --disable-web-security --user-data-dir
在Chrome 48之前,你可以使用:
open -a "Google Chrome" --args --disable-web-security
在Linux-Ubuntu上,要同时运行正常会话和不安全会话,请运行以下命令:
google-chrome --user-data-dir=/tmp --disable-web-security
关闭chrome(或chrome)并使用 --disable-web-security 参数重新启动 . 我刚刚对此进行了测试并验证了我可以访问iframe的内容,其中src = "http://google.com"嵌入在"localhost"(在chrome 5 / ubuntu下测试)的页面中 . 对我来说,确切的命令是:
--disable-web-security
Note : Kill all chrome instances before running command
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 Version 60.0.3112.78 . 你 do not 需要关闭任何chrome实例 .
在桌面上创建快捷方式
右键单击快捷方式,然后单击“属性”
编辑Target属性
设置为 "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession"
启动chrome和 ignore 消息,表示不支持--disable-web-security!
BEWARE NOT TO USE THIS PARTICULAR BROWSER INSTANCE FOR BROWSING BECAUSE YOU CAN BE HACKED WITH IT!
这个Chrome插件适用于我:Allow-Control-Allow-Origin: * - Chrome Web Store
你可以使用这个名为"Allow-Control-Allow-Origin: *"的chrome插件...它使它变得简单而且工作得非常好 . check it here: *
在Windows PC上,使用较旧版本的Chrome,该命令适用于所有人 . 我将我的Chrome降级为26版本并且有效 .
chromium-browser --disable-web-security --user-data-dir=~/ChromeUserData/
有一个名为CORS Toggle的Chrome扩展程序 .
Click here to access it and add it to Chrome .
添加后,将其切换到打开位置以允许跨域请求 .
关于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
FOR MAC USER ONLY
open -n -a /Applications/Google\ Chrome.app --args --user-data-dir="/tmp/someFolderName" --disable-web-security
对于Windows用户:
在我看来,此处接受的解决方案的问题是,如果您已经打开Chrome并尝试运行它,则无法运行 .
然而,在研究这个时,我遇到了一个关于超级用户的帖子,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
您可以在打开其他"secure"浏览器实例并正常工作的同时打开一个新的"insecure" Chrome实例 . 重要提示:每次打开窗口时删除/清除 C:/Chrome dev session 文件夹,因为第二次 --disable-web-security 无法正常工作 . 因此,您无法保存更改,然后再次将其作为第二个不安全的Chrome实例再次打开 --disable-web-security .
C:/Chrome dev session
对于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 )
cd C:\Program Files (x86)\Google\Chrome\Application
现在输入: chrome.exe --disable-web-security
chrome.exe --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所在的文件夹并键入
这应该禁用相同的源策略,并允许您访问本地文件 .
Update: 对于Chrome 22,您将看到一条错误消息,指出:
您使用的是不受支持的命令行标志: - disable-web-security . 稳定性和安全性将受到影响
但是,您可以在开发时忽略该消息 .
对于Windows ...在桌面上创建Chrome快捷方式 .右键单击>属性>快捷方式编辑"target"路径:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --disable-web-security
(将'C:.... \ chrome.exe'更改为您的chrome所在的位置) .
etvoilà:)
你可以简单地使用这个chrome扩展名Allow-Control-Allow-Origin
只需单击扩展图标即可根据需要打开或关闭启用跨资源共享
我发现最好的方法是在Windows桌面上复制Chrome或Chrome Canary快捷方式 . 将此快捷方式重命名为“NO CORS”,然后编辑该快捷方式的属性 .
在目标中将 --disable-web-security --user-data-dir="D:/Chrome" 添加到目标路径的末尾 .
--disable-web-security --user-data-dir="D:/Chrome"
你的目标应该是这样的:
Update: 新标志已添加 .
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="D:/Chrome"
26 回答
对于 Windows :
打开开始菜单
键入windows R或打开"Run"
执行以下命令:
对于 Mac :
转到终端
执行以下命令:
应打开一个新的Web安全禁用Chrome浏览器,并显示以下消息:
我不想重新启动Chrome并禁用我的网络安全性(因为我在开发时正在浏览)并且偶然发现了这个Chrome扩展程序 .
Chrome Web Store Allow-Control-Allow-Origin: * (https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en)
基本上它是一个小的切换开关来打开和关闭Allow-Access-Origin-Control检查 . 对我来说非常适合我正在做的事情 .
编辑:我尝试使用另一天的另一个项目,它停止工作 . 卸载并重新安装扩展程序修复它(重置默认值) .
在Windows 10上,以下内容将起作用 .
我有时使用它来将localhost前端站点发布到localhost后端API(例如,React到旧的.NET API) . 我在Windows 10桌面上创建了一个单独的快捷方式,因此它永远不会用于正常浏览,仅用于本地调试 . 我做了以下事情: -
右键单击桌面,添加新的快捷方式
将目标添加为
"[PATH_TO_CHROME]\chrome.exe" --disable-web-security
单击“确定” .
您将收到有关此浏览器加载的警告,它不安全,只需要注意浏览器上的浏览器 . 我倾向于在桌面上重命名这个新的快捷方式,这是大写的东西,并且远离我的其他图标,所以它不能与普通的Chrome混淆 .
希望这可以帮助!
Don't do this! You're opening your accounts to attacks . 执行此操作后,任何第三方站点都可以开始向您登录的其他网站发送请求 .
而是运行本地服务器 . 它就像打开shell /终端/命令行并输入一样简单
然后将浏览器指向
如果你发现它太慢consider this solution
如果您在Linux上使用Google Chrome,则以下命令有效 .
在Mac终端上试试这个命令 -
它打开另一个具有禁用安全性的chrome实例,并且不再存在CORS问题 . 此外,您不再需要关闭其他chrome实例 . 将localhost URL更改为您的URL .
似乎以上解决方案都没有实际工作 . 最近的chrome版本不再支持 --disable-web-security .
Allow-Control-Allow-Origin: * - chrome extension 部分解决了这个问题 . 仅当您的请求使用GET方法并且_支持CORS时,它才会起作用,它将使用404 HTTP状态代码进行响应 . 该插件无法使用chrome插件根据当前的chrome扩展API修改响应HTTP状态代码 . 并且您也无法对XHR发起的请求进行重定向 .
不确定为什么Chrome让开发人员的生活如此艰难 . 它阻止了所有可能的方法来禁用XSS安全检查,即使是完全没必要的开发使用 .
经过几天的努力和研究,一个解决方案对我来说非常有效:使用 corsproxy . 这里有两个选项:1 . 使用corsproxy.com 2.在本地框中安装corsproxy: npm install -g corsproxy
[Updated on Jun 23, 2018] 最近我正在开发一个需要再次使用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端口号),运行https,您需要生成证书和密钥并放入webroot目录 .
它还充当静态文件服务器
它也支持飞行前OPTION请求 .
对于Selenium Webdriver,在这种情况下,您可以让selenium使用适当的参数(或"switches")启动Chrome .
对于mac用户:
在Chrome 48之前,你可以使用:
在Linux-Ubuntu上,要同时运行正常会话和不安全会话,请运行以下命令:
关闭chrome(或chrome)并使用
--disable-web-security
参数重新启动 . 我刚刚对此进行了测试并验证了我可以访问iframe的内容,其中src = "http://google.com"嵌入在"localhost"(在chrome 5 / ubuntu下测试)的页面中 . 对我来说,确切的命令是:Note : Kill all chrome instances before running command
浏览器会在第一次打开时警告您“您正在使用不受支持的命令行”,您可以忽略它 .
来自铬资源:
在Chrome 48之前,您可以使用:
对于 windows 用户 Chrome Version 60.0.3112.78 . 你 do not 需要关闭任何chrome实例 .
在桌面上创建快捷方式
右键单击快捷方式,然后单击“属性”
编辑Target属性
设置为 "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession"
启动chrome和 ignore 消息,表示不支持--disable-web-security!
BEWARE NOT TO USE THIS PARTICULAR BROWSER INSTANCE FOR BROWSING BECAUSE YOU CAN BE HACKED WITH IT!
这个Chrome插件适用于我:Allow-Control-Allow-Origin: * - Chrome Web Store
你可以使用这个名为"Allow-Control-Allow-Origin: *"的chrome插件...它使它变得简单而且工作得非常好 . check it here: *
在Windows PC上,使用较旧版本的Chrome,该命令适用于所有人 . 我将我的Chrome降级为26版本并且有效 .
有一个名为CORS Toggle的Chrome扩展程序 .
Click here to access it and add it to Chrome .
添加后,将其切换到打开位置以允许跨域请求 .
关于Ola Karlsson的回答,确实最好的方法是在不同的会话中打开不安全的Chrome . 这样您就不必担心关闭所有当前打开的标签页,也可以继续使用原始Chrome会话安全地浏览网页 .
这些批处理文件应该适用于Windows .
将其放入Chrome_CORS.bat file以方便使用
这个是 Chrome Canary . Canary_CORS.bat
FOR MAC USER ONLY
对于Windows用户:
在我看来,此处接受的解决方案的问题是,如果您已经打开Chrome并尝试运行它,则无法运行 .
然而,在研究这个时,我遇到了一个关于超级用户的帖子,Is it possible to run Chrome with and without web security at the same time? .
基本上,通过运行以下命令(或使用它创建快捷方式并通过它打开Chrome)
您可以在打开其他"secure"浏览器实例并正常工作的同时打开一个新的"insecure" Chrome实例 . 重要提示:每次打开窗口时删除/清除
C:/Chrome dev session
文件夹,因为第二次--disable-web-security
无法正常工作 . 因此,您无法保存更改,然后再次将其作为第二个不安全的Chrome实例再次打开--disable-web-security
.对于Windows:
(使用 windows 8.1, chrome 44.0 )
首先,关闭谷歌浏览器 .
然后,打开命令提示符并转到'chrome.exe'所在的文件夹 .
所以我输入:
cd C:\Program Files (x86)\Google\Chrome\Application
)现在输入:
chrome.exe --disable-web-security
一个新的铬窗口将打开 .
是的 . 对于OSX,打开终端并运行:
--user-data-dir required on Chrome 49+ on OSX
对于Linux运行:
此外,如果您尝试访问本地文件以用于开发目的,如AJAX或JSON,您也可以使用此标志 .
对于Windows,请进入命令提示符并进入Chrome.exe所在的文件夹并键入
这应该禁用相同的源策略,并允许您访问本地文件 .
Update: 对于Chrome 22,您将看到一条错误消息,指出:
但是,您可以在开发时忽略该消息 .
对于Windows ...在桌面上创建Chrome快捷方式 .
右键单击>属性>快捷方式
编辑"target"路径:
(将'C:.... \ chrome.exe'更改为您的chrome所在的位置) .
etvoilà:)
你可以简单地使用这个chrome扩展名Allow-Control-Allow-Origin
只需单击扩展图标即可根据需要打开或关闭启用跨资源共享
我发现最好的方法是在Windows桌面上复制Chrome或Chrome Canary快捷方式 . 将此快捷方式重命名为“NO CORS”,然后编辑该快捷方式的属性 .
在目标中将
--disable-web-security --user-data-dir="D:/Chrome"
添加到目标路径的末尾 .你的目标应该是这样的:
Update: 新标志已添加 .