如果用户已登录,我有一个将用户(JavaScript)重定向到“帐户管理”页面(在https域上)的页面。如果没有,该页面会显示有关如何登录的说明。
一旦他们完成更新他们的偏好,就会有“返回内容”链接,将用户带回到之前的URL。问题是,由于此时用户已登录,因此重定向会触发并将其发送回帐户管理页面。
我想我可以通过查看https域中的referrer标头来确定这一点,但是唉,它们不存在于https(据我所知)。
JSP:
request.getHeader("referer");
//returns null
我尝试使用JavaScript动态地附加带有参数的URL,然后我可以在再次触发重定向之前检查该参数。
的JavaScript
window.location.pathname += "?test=1";
这会导致重定向循环,但我不知道另一种修改URL路径的方法。
由于工作中的访问限制,除了我的页面模板之外,我无法工作。我无法修改https服务器上的任何内容,也无法修改htaccess。
因此,有了这些限制,如何确定用户是否从https域进入我的页面?
答案 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中有一个特定的哈希值,您可以在数据库中引用它以获取引荐来源。
希望这会有所帮助......