如果用户登录,我有一个页面将用户(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。