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



如果用户登录,我有一个页面将用户(JavaScript)重定向到"帐户admin"页面(在https域上)。如果没有,页面将显示如何登录的说明。

一旦他们更新了他们的首选项,就会有一个"返回内容"链接,将用户带回到前一个URL。问题是,由于用户此时已经登录,重定向触发并将他们直接发送到他们的帐户管理页面。

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

JSP:

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

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

JavaScript

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

这会导致重定向循环,但我不知道还有其他方法来修改URL路径。

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

那么,有了这些限制,我怎么知道用户是否从https域访问了我的页面呢?

获取参考URL

document.referrer

如果您要向URL添加的信息不应该发送到服务器,而是要供页面使用,那么请使用散列,而不是查询。"?"只能在发送数据到服务器以处理

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

此链接将在url散列中添加"dontdoanything",而不重新加载页面。

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

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

如果你是从不在你的域名上的页面重定向,我建议为这些网站提供一个特定的链接,在URI中有一个特定的哈希值,你可以在你的数据库中引用以获得referrer。

最新更新