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

时间:2010-06-23 15:00:22

标签: javascript ajax google-chrome

有没有办法在Google的Same-origin policy浏览器上停用Chrome

35 个答案:

答案 0 :(得分:1013)

是的。对于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。稳定性和安全性将受到影响。

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

答案 1 :(得分:900)

关闭chrome(或chrome)并使用--disable-web-security参数重新启动。我刚刚对此进行了测试,并验证了我可以访问iframe的内容,其中src =“http://google.com”嵌入在“localhost”(在chrome 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

答案 2 :(得分:455)

对于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

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

答案 3 :(得分:109)

对于 Windows

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

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

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

      open /Applications/Google\ Chrome.app --args --user-data-dir="/var/tmp/Chrome dev session" --disable-web-security
      
    3. 应打开一个新的Web安全禁用Chrome浏览器,并显示以下消息:

      enter image description here

答案 4 :(得分:72)

我不想重新启动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检查。对我来说非常适合我正在做的事情。

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

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

答案 5 :(得分:57)

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

  1. 在桌面上创建快捷方式
  2. 右键单击快捷方式,然后单击“属性”
  3. 编辑目标媒体资源
  4. 将其设置为“C:\ Program Files(x86)\ Google \ Chrome \ Application \ chrome.exe”--disable-web-security --user-data-dir =“C:/ ChromeDevSession”
  5. 启动chrome并忽略显示不支持--disable-web-security的消息!
  6. 请注意不要使用此特定浏览器进行浏览,因为您可以使用它!

答案 6 :(得分:46)

似乎以上解决方案都没有真正起作用。最近的Chrome版本不再支持 - disable-web-security

Allow-Control-Allow-Origin:* - chrome extension 部分解决了问题。仅当您的请求使用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端口 命令行中的数字),要运行https,您需要生成证书和 键并将它们放在webroot目录中。
  • 它还充当静态文件服务器
  • 它也支持飞行前OPTION请求。

启动CORSProxy服务器(http端口8080): node static_server.js 8080

访问代理: http://host:8080/http://www.somesite.com

答案 7 :(得分:41)

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

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

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

etvoilà:)

答案 8 :(得分: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"

enter image description here

答案 9 :(得分:31)

在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。

答案 10 :(得分:20)

你可以使用这个名为“Allow-Control-Allow-Origin:*”的chrome插件......它使它变得简单而且工作得非常好。 check it here: *

Chrome extenstion

答案 11 :(得分:19)

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

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

答案 12 :(得分:13)

如果您在Linux上使用Google Chrome,则可以使用以下命令。

google-chrome  --disable-web-security

答案 13 :(得分:12)

此Chrome插件适用于我: Allow-Control-Allow-Origin: * - Chrome Web Store

答案 14 :(得分:9)

  1. 创建新的快捷方式

Create new shortcut


  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"

Paste the path


  1. 命名

Unsafe Chrome.exe

enter image description here


现在您在台式机上拥有一个不安全的Google Chrome版本,无法将其用于调试前端应用程序而没有任何CORS问题。

答案 15 :(得分:9)

使用当前最新的chrome版本(73.0.3683.86),使其在我的测试中起作用的唯一方法是使用以下标志启动chrome(更改 D:\ temp 按您的喜好):

  

-禁用站点隔离试用版-禁用Web安全   --user-data-dir =“ D:\ temp”

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

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

答案 16 :(得分:9)

    // *** app.js ***

    .run(function (FIREBASE_CONFIG) {
        firebase.initializeApp(FIREBASE_CONFIG);
    });

    // *** DataService ***

    var root = firebase.database().ref();         

    var service = { 
        root: root, 
        items: root.child('items'), 
        tastings: root.child('tastings'), 
        users: root.child('users'), 
        votes: root.child('votes') 
    };

    return service;

    // *** Controller ***

    $scope.tastings = $firebaseArray(dataService.tastings); 

答案 17 :(得分:8)

仅限MAC用户

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

答案 18 :(得分:8)

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

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

答案 19 :(得分:8)

您只需使用此Chrome扩展程序Allow-Control-Allow-Origin

即可

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

答案 20 :(得分:7)

根据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

答案 21 :(得分:6)

对于mac用户:

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

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

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

答案 22 :(得分:6)

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

Click here to access it and add it to Chrome

添加后,将其切换到 on 位置以允许跨域请求。

答案 23 :(得分:5)

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

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

答案 24 :(得分:4)

这是一个不断变化的目标。...今天,我需要添加另一个标志来使其正常工作: --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

答案 25 :(得分:3)

对于Windows:

(使用 Windows 8.1,chrome 44.0

首先,关闭谷歌浏览器。

然后,打开命令提示符并转到&chrome; chrome.exe&#39;是

( 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

将打开一个新的镀铬窗口。

答案 26 :(得分:2)

不要这样做! You're opening your accounts to attacks。执行此操作后,任何第三方站点都可以开始向您登录的其他网站发送请求。

而是运行本地服务器。它就像打开shell /终端/命令行并输入

一样简单
cd path/to/files
python -m SimpleHTTPServer

然后将浏览器指向

http://localhost:8000

如果发现它太慢consider this solution

答案 27 :(得分:1)

在Windows PC上,使用较旧版本的Chrome,该命令适用于所有人。 我将我的Chrome降级为26版本并且有效。

答案 28 :(得分:1)

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

chrome://net-internals/#hsts

答案 29 :(得分:1)

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

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

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

答案 30 :(得分:1)

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

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

答案 31 :(得分:0)

我有时会使用它来将localhost前端站点发布到localhost后端API(例如,对旧的.NET API进行React)。我在Windows 10桌面上创建了一个单独的快捷方式,因此它从不用于正常浏览,仅用于本地调试。我做了以下事情: -

  1. 右键单击桌面,添加新的快捷方式
  2. 将目标添加为"[PATH_TO_CHROME]\chrome.exe" --disable-web-security
  3. 单击“确定”。
  4. 您将收到有关此浏览器加载的警告,它不安全,只需关注您浏览器上的内容即可。我倾向于在桌面上重命名这个新的快捷方式,在资本方面,并将其从我的其他图标移开,因此不能将其与普通的Chrome混淆。

    希望这有帮助!

答案 32 :(得分:0)

如果您使用网络服务器,则可以使用 Header

在 Apache 上 #define NET_RETURN_DATA_ERROR _EC(21) // Error occurs when verify returned data. 或在 <VirtualHost> 文件中。

.htaccess

在 Nginx 上

Header set Access-Control-Allow-Origin 'origin-list'

答案 33 :(得分:-1)

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

我在自己的.profile中添加了alias chrome='open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir --disable-web-security'作为别名。

其他命令将禁用我的其他扩展名,这将在禁用cors的情况下引导您的普通chrome

答案 34 :(得分:-1)

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