如何确定用户是否来自https域?

时间:2011-10-13 22:47:19

标签: javascript http jsp url https

如果用户已登录,我有一个将用户(JavaScript)重定向到“帐户管理”页面(在https域上)的页面。如果没有,该页面会显示有关如何登录的说明。

一旦他们完成更新他们的偏好,就会有“返回内容”链接,将用户带回到之前的URL。问题是,由于此时用户已登录,因此重定向会触发并将其发送回帐户管理页面。

我想我可以通过查看https域中的referrer标头来确定这一点,但是唉,它们不存在于https(据我所知)。

JSP:

    request.getHeader("referer");
    //returns null

我尝试使用JavaScript动态地附加带有参数的URL,然后我可以在再次触发重定向之前检查该参数。

的JavaScript

    window.location.pathname += "?test=1";

这会导致重定向循环,但我不知道另一种修改URL路径的方法。

由于工作中的访问限制,除了我的页面模板之外,我无法工作。我无法修改https服务器上的任何内容,也无法修改htaccess。

因此,有了这些限制,如何确定用户是否从https域进入我的页面?

1 个答案:

答案 0 :(得分:1)

获取推荐网址

document.referrer

如果要向不应发送到服务器的URL添加信息,而是将页面添加到要使用的页面,则使用哈希,而不是查询。 “?”只有在将数据发送到服务器进行处理时才应使用

window.location.hash += 'test=1'
//Makes the url look like http://example.com/#test=1

This Link 会将“dontdoanything”附加到网址哈希,而无需重新加载网页。

编辑:所以我做了一些研究,似乎没有一种快速的方法(即document.referrer)。但无论如何,这些方法都不是很可靠。我听说过web-kit(可能是旧版本,现在已经修复)如果链接在新的标签页或窗口中打开,即使对于http到http,也会删除引用者信息。

您似乎完全在自己的网站上工作,因此我会考虑在URI中使用Cookie或哈希。您可以在重定向时在cookie或散列中设置一些变量,并在页面加载时将其作为状态标志读取。您当然可以将Cookie保留一段时间,也可以保留域中的所有页面。您可能已将会话信息存储在cookie中,甚至可以检查。

如果您从不在您网域上的网页重定向,我建议为这些网站提供一个特定的链接,在URI中有一个特定的哈希值,您可以在数据库中引用它以获取引荐来源。

希望这会有所帮助......