繁体   English   中英

为什么same-origin-policy在本地域上阻止此javascript调用?

[英]Why is same-origin-policy blocking this javascript call on a local domain?

我在http://mysite.local/上运行了一个本地开发站点(这是安装了Grappelli的Django管理站点,如果有关系的话)。

管理站点打开一些操作的弹出窗口(即通过showRelatedObjectLookupPopup()

由于先前具有相同来源策略的类似问题(在生产中,管理站点从CDN域中加载了一些URL,这可能会触发它),我们有了一个“规范化” JS函数,该函数显式设置:

document.domain = "mysite.local";

在页面加载时,在父级和弹出式窗口中均如此。

弹出窗口包含一个带有onclick处理程序的链接,该链接会在父级中触发JS函数:

onclick="opener.dismissRelatedLookupPopup(window, '422'); return false;"

在Chrome或FF中单击此链接会导致类似的浏览器错误:

跨域对象访问属性“ dismissRelatedLookupPopup”的权限被拒绝

要么

阻止了起源为“ http://mysite.local ”的框架访问跨域框架。

弹出URL和打开URL都共享相同的协议,域和端口。

这只是本地域上的一个问题。 在dev / uat / production网站(例如dev.mysite.com)上,通过上述“ normaliser”功能将所有域的域都设置为超域“ mysite.com”,弹出窗口可以在家长。

是什么在本地域上阻止了它? 我错过了什么?

看来,按照@charlietfl最初的建议切换本地域确实可以解决此问题。 现在,它以local.mysite.com而不是mysite.local在本地运行,并且同源错误消失了。 我仍然不清楚是什么引发了错误(是因为该域只有两个部分而不是三个部分?它是针对以“ .local”结尾的域吗?),但是在极少数情况下,其他任何人都会跳闸为此,这就是为我解决的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM