【问题标题】:How can I determine if a user has come from an https domian?如何确定用户是否来自 https 域?
【发布时间】:2011-12-07 08:38:55
【问题描述】:

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

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

我认为我可以通过查看 https 域中的引用标头来确定这一点,但可惜的是,它们对于 https 不存在(据我所知)。

JSP:

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

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

JavaScript

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

这会导致重定向循环,但我不知道还有什么方法可以修改 URL 路径。

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

那么,有了这些限制,我如何判断用户是否从 https 域访问了我的页面?

【问题讨论】:

    标签: javascript http jsp url https


    【解决方案1】:

    获取参考网址

    document.referrer
    

    如果您向 URL 添加的信息不应发送到服务器,而是供页面使用,则使用散列,而不是查询。这 ”?”仅当您将数据发送到服务器进行处理时才应使用

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

    This Link 会将“dontdoanything”附加到 url 哈希,而不重新加载页面。

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

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

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

    希望这会有所帮助...

    【讨论】:

    • 谢谢,但是 document.referrer 也从 https 返回 null。
    • 啊,是的,忘记了...让我看看我能挖掘什么...与此同时,您可以在 https 链接中的哈希值中附加一个值网站并在哈希中读取
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多