我有一个页面,我需要检查是否存在cookie,然后执行重定向。
我编写了代码(ASP.NET)来检测cookie并执行重定向。伪代码:
HttpCookie myCookie = Request.Cookies.Get("theCookie");
if(myCookie == null)
{
myCookie = new HttpCookie("theCookie","myValue")
response.Redirect("page.aspx"); //Redirect to check for the presence of the cookie
}
More code...
当用户启用了Cookie时,此方法可以正常工作。然而,当他们禁用cookie时,他们最终陷入无限循环(页面尝试创建cookie,重定向,看不到cookie,然后重新定向,无限制)。大多数人类用户可能会好起来,但这可能会对网站的搜索引擎优化评级产生一些影响。
我已经把我的大脑用来解决问题了,因为饼干是不可能的,所以离开了观察状态和查询字符串。
因为我必须进行重定向,所以我认为我遇到了查询字符串。问题是为了检测页面是否已被命中,我需要附加一个查询字符串以防止重定向再次被踢。
有没有人能想到一种方法来实现这一目标(防止重定向)而不使用cookie,viewstate或querystrings?我认为答案可能不是......
答案 0 :(得分:3)
以您所描述的方式使用查询字符串是正确的解决方案。
答案 1 :(得分:0)
编辑:看起来很糟糕 - 查询字符串就是方法。保持参考:可以禁用本地存储和脚本,因此在设计任何客户端检测逻辑时需要考虑它。
您还可以尝试在浏览器中使用本地存储以防止无限重定向。它将允许您保持URL清除“?isCookie = true”查询字符串。请注意,您需要启用JavaScript。如果你担心cookie,你也应该担心禁用JavaScript。
答案 2 :(得分:0)
我做的事情(如果有人试图这样做)使用了几个技巧:
如果用户禁用了Javascript,则隐藏字段的值仍为false,因此页面仍然只呈现一次。
感谢您让我通过谈话让我思考!