对 Chrome 的同源策略的困惑:如何在不要求用户禁用 Chrome 中的安全性的情况下摆脱它?

Posted

技术标签:

【中文标题】对 Chrome 的同源策略的困惑:如何在不要求用户禁用 Chrome 中的安全性的情况下摆脱它?【英文标题】:Confusion about Chrome's same origin policy: how to get rid of it without asking the user disable security in Chrome? 【发布时间】:2014-04-10 08:04:04 【问题描述】:

我很困惑:我正在开发一个加载 google+ 平台 api 脚本以创建单个登录的网络应用程序 (html/CSS/JS)。由于“同源策略”,它可以在 Firefox 中运行,但不能在 Chrome 中运行,并且我收到“阻止具有源的帧...”错误。

我不希望用户使用“--disable-web-security”之类的选项来启动他们的 Chrome...,是吗? ;-)

所以我很困惑:如何让它与 Chrome 一起使用?

例如:如果我尝试加载:

<script type="text/javascript">
        (function() 
            var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
            po.src = 'https://apis.google.com/js/client:plusone.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
        )();
    </script>

我明白了:

Blocked a frame with origin "https://apis.google.com" from accessing a frame with origin "https://boardlineapp.com". Protocols, domains, and ports must match. 

【问题讨论】:

什么时候发生?运行上面的脚本时(即加载client:plusone.js时)或稍后执行client:plusone.js时是否抛出错误? 嗨,其实我也不知道。 使用开发者工具在 JavaScript 中设置断点。 您找到解决方案了吗?我也有同样的问题。 @ChrisWatts 不是真的。似乎您可以让这些错误发生并且它们不是问题,代码仍然可以运行。如果您看不到它们,您只需禁用 chrome 选项。 【参考方案1】:

检查您的域协议是否为 https:

【讨论】:

以上是关于对 Chrome 的同源策略的困惑:如何在不要求用户禁用 Chrome 中的安全性的情况下摆脱它?的主要内容,如果未能解决你的问题,请参考以下文章

开发机上绕过Chrome同源策略的办法

Chrome:禁用本地主机的同源策略

如何在 Chrome 扩展程序中禁用同源策略?

无法解决的 CORS 问题!如何在 MacOS 上禁用 Chrome 的同源策略?

在 Android Chrome 上禁用同源策略

在 Chrome 中禁用同源策略