有没有办法在谷歌的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
其他回答
关闭chrome(或chrome)并使用--disable web安全参数重新启动。我刚刚测试了这个,并验证了我可以使用src=“”访问iframe的内容http://google.com嵌入在“localhost”(在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
这是一个不断移动的目标。。。。今天我需要添加另一个标志以使其生效:--禁用站点隔离试验
操作系统X:open/Applications/Google\Chrome.app--args--用户数据dir=“/var/tmp/Chrome_dev_2”--禁用web安全--禁用站点隔离测试
是的。对于OSX,打开终端并运行:
$ open -a Google\ Chrome --args --disable-web-security --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。稳定和安全将受到影响。
然而,您可以在开发时忽略该信息。
对于Windows:
打开开始菜单键入windows+R或打开“运行”执行以下命令:chrome.exe--user data dir=“C:\/chrome dev session”--禁用web安全
对于Mac:
转到终端执行以下命令:open/Applications/Google\Chrome.app--args--用户数据dir=“/var/tmp/Chrome-dev会话”--禁用web安全
新的禁用web安全的chrome浏览器将打开,并显示以下消息:
对于Mac
如果您想在不关闭现有选项卡的情况下打开禁用web安全的Chrome浏览器的新实例,请使用以下命令
open -na Google\ Chrome --args --user-data-dir=/tmp/temporary-chrome-profile-dir --disable-web-security
它将打开禁用web安全的Chrome浏览器的新实例,如下所示
在Windows PC上,使用较旧版本的Chrome,该命令将适用于所有人。我把我的Chrome降到了26版,而且效果不错。
推荐文章
- 使用jQuery改变输入字段的类型
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用jQuery以像素为整数填充或边距值
- 检查是否选择了jQuery选项,如果没有选择默认值
- Next.js React应用中没有定义Window
- 如何重置笑话模拟函数调用计数之前,每次测试
- 如何强制一个功能React组件渲染?
- 在javascript中从平面数组构建树数组
- 将Dropzone.js与其他字段集成到现有的HTML表单中
- 如何在AngularJS中观察路由变化?
- JavaScript DOM删除元素
- 将dd-mm-yyyy字符串转换为日期
- Javascript复选框onChange
- Javascript函数前导bang !语法
- 如何在页面上遍历所有DOM元素?