有没有办法在谷歌的Chrome浏览器上禁用同源策略?
当前回答
编辑3:扩展似乎不再存在。。。这些天来,为了避开CORS,我通常会在单独的目录中设置另一个版本的Chrome,或者使用Firefoxhttps://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/相反
编辑2:我再也无法让这项工作持续下去了。
编辑:前几天我试着用另一个项目,但它停止了工作。卸载并重新安装扩展修复了它(以重置默认值)。
原始答案:
我不想重启Chrome并禁用我的网络安全(因为我在开发时正在浏览),无意中发现了这个Chrome扩展。
Chrome Web Store允许控件允许来源:*(https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en)
基本上,它是一个小切换开关,用于打开和关闭“允许访问源代码控制”检查。对于我所做的一切来说,这是完美的。
其他回答
对于Windows用户:
在我看来,这里接受的解决方案的问题是,如果您已经打开了Chrome并尝试运行Chrome.exe--disable-websecurity命令,它将无法工作。
然而,在研究这一问题时,我在超级用户网站上看到了一篇帖子,“是否可以同时运行具有和不具有网络安全性的Chrome?”?。
基本上,你需要添加到命令中,然后像这样运行它(或者用它创建一个快捷方式,然后运行一个新的Chrome实例)
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
它将打开一个新的“不安全”的Chrome实例,同时保持其他“安全”的浏览器实例打开并正常工作。
这是通过在C:下创建一个新的文件夹/目录“Chrome-dev-session”来实现的,告诉这个新的Chrome实例使用该文件夹/目录作为其用户和会话数据。因此,新实例与您的“正常”Chrome数据分离,您的书签和其他保存的数据在此实例中不可用。
注意:只有使用此方法打开的Chrome的第一个“新”实例才会生效,因此它只是第一个新Chrome窗口中的第一个选项卡,才会生效。如果您关闭了该实例,您可以再次使用相同的命令,例如,指向本地应用程序或类似应用程序的任何书签仍将存在,因为它指向同一文件夹。
如果要运行多个“不安全”实例,每个实例都需要自己的文件夹/目录,因此需要使用不同的文件夹名称再次运行命令。然而,这也意味着每个不安全的实例都将与其他实例分离,因此任何书签或其他保存的用户或会话数据在实例之间都不可用。
似乎上述解决方案都不起作用。最近的chrome版本不再支持--disable web安全性。
允许控制允许来源:*-chrome扩展部分解决了问题。只有当您的请求使用GET方法并且没有自定义HTTP头时,它才能工作。否则,chrome将发送OPTIONS HTTP请求作为飞行前请求。如果服务器不支持CORS,它将使用404 HTTP状态代码进行响应。插件无法修改响应HTTP状态代码。所以chrome会拒绝这个请求。chrome插件无法根据当前的chrome扩展API修改响应HTTP状态代码。对于XHR发起的请求,也不能进行重定向。
不知道为什么Chrome会让开发者生活如此艰难。它阻止了禁用XSS安全检查的所有可能方式,即使是用于开发用途,这是完全不必要的。
经过几天的努力和研究,有一个解决方案对我来说非常有效:使用corsporoxy。这里有两个选项:1.使用[https://cors-anywhere.herokuapp.com/]2.在本地箱中安装corsporoxy:npm install-g corsporoxy
【2018年6月23日更新】最近我正在开发一款SPA应用程序,需要再次使用corsporoxy。但似乎github上的corsporoxy都不能满足我的要求。
出于安全原因,需要它在防火墙内运行。所以我不能使用https://cors-anywhere.herokuapp.com/. 它必须支持https,因为chrome不会阻止https页面中的https ajax请求。我需要在nodejs上运行。我不想维护另一个语言堆栈。
所以我决定用nodejs开发我自己版本的corsporoxy。其实很简单。我已经在github上发布了它作为一个要点。以下是源代码要点:https://gist.github.com/jianwu/8e76eaec95d9b1300c59596fbfc21b10
它是普通的nodejs代码,没有任何附加的依赖关系您可以在http和https模式下运行(通过传递https端口命令行中的数字),要运行https,需要生成cert和键并将它们放在webroot目录中。它还充当静态文件服务器它还支持飞行前OPTION请求。
要启动CORSProxy服务器(http端口8080):节点static_server.js 8080
要访问代理,请执行以下操作:http://host:8080/http://www.somesite.com
对于Selenium Webdriver,在这种情况下,您可以使用适当的参数(或“开关”)让Selenium启动Chrome。
@driver = Selenium::WebDriver.for(:Chrome, {
:detach => false,
:switches => ["--disable-web-security"]
})
只有对于OSX Catalina,以下命令对我有效。
open-n-a/Applications/Google\Chrome.app/Contents/MacOS/Google\Chrome--args--用户数据dir=“/tmp/Chrome_dev_test”--禁用web安全
对于Windows。。。在桌面上创建Chrome快捷方式。右键单击>财产>快捷方式编辑“目标”路径:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --disable-web-security
(将“C:….\chrome.exe”更改为chrome所在的位置)。
等等:)
推荐文章
- 给一个数字加上st, nd, rd和th(序数)后缀
- 如何以编程方式触发引导模式?
- setTimeout带引号和不带括号的区别
- 在JS的Chrome CPU配置文件中,'self'和'total'之间的差异
- 用javascript检查输入字符串中是否包含数字
- 如何使用JavaScript分割逗号分隔字符串?
- 在Javascript中~~(“双波浪号”)做什么?
- 谷歌chrome扩展::console.log()从后台页面?
- 未捕获的SyntaxError:
- [].slice的解释。调用javascript?
- jQuery日期/时间选择器
- 我如何预填充一个jQuery Datepicker文本框与今天的日期?
- 数组的indexOf函数和findIndex函数的区别
- jQuery添加必要的输入字段
- Access-Control-Allow-Origin不允许Origin < Origin >