对 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 中的安全性的情况下摆脱它?的主要内容,如果未能解决你的问题,请参考以下文章