我们有一个搜索结果页面,用户可以通过多种方式点击。 90%的方法将设置“搜索条件”会话对象,结果页面将用于检索搜索结果。
当找不到会话对象时,我们通常会向用户显示“无效搜索”消息,并为他们提供指向主搜索页面的链接。
例外情况是用户点击一个网页,该网页将搜索结果页面作为默认页面(我们使用.NET的主题为我们的网站提供私有标签,并使用我们的关联公司的颜色和徽标进行换肤)。如果搜索结果页面是网站的默认页面,则会在没有会话条件时执行特殊搜索。
这在我们的测试中运作得相当好,但是我们想要处理一个边缘情况:当某人在搜索结果页面(来自搜索页面)时会话到期,然后他们点击结果的下一页,他们将获得此特殊搜索,而不是“过期会话”消息。
这是我们使用的基本格式,其中searchCriteria是从session设置的。
if (searchCriteria == null)
{
if (/*Check if this is the default url for this site*/)
{
//Preform special search
}
else
{
//Display 'session expired message'
}
}
有没有办法可以检查内部if块中的Session,看看用户的会话是否因为现有的到期而是新的?或者浏览器会在会话过期时丢弃会话cookie吗?
是否存在浏览器差异?有人将过期的会话cookie返回给服务器,而其他人在过期时删除它们吗?或者它是否一致?