我有一个加载在IFRAME中的网页,它可以在IE和Firefox中正常运行,但不能在Opera中运行。我讨厌哪个,因为我多年来一直是Opera的用户。我写了这个东西。 : - )
问题是Opera没有加载构成页面的一些JavaScript文件。我怀疑这与页面本身是通过HTTPS加载的事实有关,而且包含的文件是通过HTTP从不同的主机和端口加载的。我相信Opera允许这样做,但Dragonfly的Net选项卡甚至没有显示加载它们的尝试。
该页面是Rally“自定义应用”,我无法控制它在IFRAME中加载或通过HTTPS加载的事实。我也无法控制包含的文件是从不同的主机加载,或者主机只支持HTTP的事实。所以我对混合内容感到困惑。
除了其他内容之外,页面的HEAD元素包含(清理了一下):
<script src="http://www.example.com:81/common/jquery-1.4.2.js"></script>
<script src="http://www.example.com:81/common/jsTree/jquery.jstree.js"></script>
<script src="http://www.example.com:81/common/utils_jserror.js"></script>
<script src="http://www.example.com:81/common/utils_logging.js"></script>
<script src="http://www.example.com:81/common/utils_print_r.js"></script>
<script src="http://www.example.com:81/common/utils_rally_query.js"></script>
<script src="http://www.example.com:81/common/json2.js"></script>
<script src="/slm/js/slm.js"></script>
<script src="/slm/js-lib/dojo/rally-1.3.1/dojo/dojo.js.uncompressed.js"></script>
<script src="/slm/mashup/1.18/js/batch-toolkit.js"></script>
<script src="/slm/mashup/1.18/js/utilities.js"></script>
所有的“/ slm / ...”内容正在加载,“www.example ...”内容的无是。
有人知道我做错了吗?
答案 0 :(得分:14)
Opera有一项称为跨网络保护的功能。基本上,它对互联网上的哪些页面可以对您本地网络上的内容做了一些额外的限制。
此功能存在的原因是所谓的“网络钓鱼农场”漏洞的出现,在那里发现一些流行的家庭路由器/调制解调器的基于HTTP的配置屏幕安全性太差,恶意网页可能会重写您的路由器设置 - 例如,将其配置为使用代理并通过恶意服务器管道所有流量。为了解决这个问题,Opera知道公共网站上没有使用某些IP地址(例如127.0.0.1或192.168。*),并且它不允许来自“公共”站点的页面加载文件或将请求发送到“当地的“网站。
您可以按站点重新配置。最简单的事情可能是在“公共”站点上添加一个IFRAME,从本地服务器加载一个资源。 IFRAME将显示“跨域请求”警告页面,其中包含一些选择加入链接。单击链接以始终允许来自该服务器的本地请求,并且瞧 - 您的跨网络应用程序现在应该再次运行。
(添加IFRAME就像查看来源一样简单,添加<iframe src="http://local/whatever/included/file.js"></iframe>
,保存,以及“工具&gt;高级&gt;从缓存中重新加载”)