我有一个混合我网站的HTTP/HTTPS部分的问题,这有点难以解释。基本上,该网站的结构使得:检查安全Cookie并将HTTPS模式中的非HTTPS父级重定向到
- 首页和公共内容页面通过HTTP发送
- 需要授权的所有页面通过HTTPS
我加入了“记住发送“功能发送给会话密钥的会话密钥在安全 cookie中发送给用户。这对于网站的授权区域(HTTPS)非常有效 - 我可以删除用户的PHP会话,并且当我再次访问这些授权页面时,它将通过安全会话密钥cookie重新创建。
我有一个登录按钮在网站上发送未加密的网页。此登录按钮启动一个模式窗口,此模式窗口的内容通过HTTPS传输。安全会话密钥cookie在该模式窗口的请求中发送,因为它通过安全连接。 如果检测到此会话密钥cookie,则需要关闭模式窗口并将父页面重定向到站点的授权部分。
// this script running on https://somewhere.com/account/ in an iframe
// whose parent is http://somewhere.com/ (non-HTTPS)
<?php if ($already_authorized): ?>
<script type="text/javascript">
$(document).ready(function redirectParent() {
parent.jQuery.fancybox.close();
parent.window.location.href = 'https://somewhere.com/account/';
});
</script>
<?php endif ?>
我正在与跨域脚本预防,但问题,因为从https://somewhere.com/account/
模态窗口加载尝试它的父窗口上执行JS功能,http://somewhere.com
。
所以,我在简短形式的两难境地:
- 不安全页面包含指向一个模式登录窗口,它通过HTTPS加载
- 模态登录窗口可以检查会话密钥的cookie,因为它是通过安全连接发送
- 模态登录窗口无法告诉其父母关闭JS,但是,因为它是通过不同的协议加载的
- 模态登录窗口无法加载通过不安全的连接。这会让JS访问父级,但是安全cookie将不可用。
如果我的问题有足够的意义,我想知道:有没有办法解决这个令人沮丧的问题?或者我只是想通过HTTPS加载整个站点(包括公共和私有部分)?
你可以告诉父母关闭窗口。可以调用回调函数。父母将具有关闭模式的功能,并且您将在模态窗口内传递回调。最后,模态会调用父母的功能。 – 2011-06-16 21:57:40