Javascript 如何确定用户是否来自https域?
我有一个页面,如果用户登录,它会将用户(JavaScript)重定向到“帐户管理”页面(在https域上)。如果没有,页面将向他们显示如何登录的说明 一旦他们更新了他们的首选项,就会有一个“返回内容”链接,将用户带回上一个URL。问题是,由于用户在此点登录,重定向会触发并将其发送回其帐户管理页面 我想我可以通过查看https域中的referer头来确定这一点,但遗憾的是,https不存在它们(据我所知) JSP: 我尝试使用JavaScript动态地向URL追加一个参数,然后在再次触发重定向之前检查该参数 JavaScriptJavascript 如何确定用户是否来自https域?,javascript,http,jsp,url,https,Javascript,Http,Jsp,Url,Https,我有一个页面,如果用户登录,它会将用户(JavaScript)重定向到“帐户管理”页面(在https域上)。如果没有,页面将向他们显示如何登录的说明 一旦他们更新了他们的首选项,就会有一个“返回内容”链接,将用户带回上一个URL。问题是,由于用户在此点登录,重定向会触发并将其发送回其帐户管理页面 我想我可以通过查看https域中的referer头来确定这一点,但遗憾的是,https不存在它们(据我所知) JSP: 我尝试使用JavaScript动态地向URL追加一个参数,然后在再次触发重定向之前
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哈希中附加“dontdoany”,而无需重新加载页面
编辑:所以我做了一些研究,但似乎没有一种快速的方法(即document.referer
)。但这些方法无论如何都不是很可靠。我听说,如果在新选项卡或窗口中打开链接,web工具包(可能是较旧的版本,现在已修复)将删除推荐人信息,即使是http到http
<>看起来你完全在自己的站点上工作,所以我会考虑使用cookie或URI中的散列。您可以在重定向回页面时在cookie或哈希中设置一些变量,并在页面加载时将其作为状态标志读取。当然,您可以让cookie持续一段时间,也可以跨域上的所有页面。您可能已经将会话信息存储在cookie中,您甚至可以检查它
如果您是从不在您的域中的页面重定向,我建议为这些站点提供一个特定的链接,在URI中提供一个特定的散列,您可以在数据库中引用该链接以获取引用者
希望这有帮助…谢谢,但是document.referer也会从https返回null。啊,是的,是的,忘记了这一点…让我看看我能找到什么…同时,你可以在https站点的链接中向哈希添加一个值并读取哈希
window.location.hash += 'test=1'
//Makes the url look like http://example.com/#test=1