2011-01-13 59 views
4

我想:C:网址不附加JSESSIONID当禁用Cookie

<c:url value="/web/pclub/userprofile" var="test"> 
    <c:param name="userid" value="${user.id}"/> 
</c:url> 
${test} 

但是,当我检查页面禁用Cookie,然后将JSESSIONID不追加。 有谁知道为什么会发生这种情况?

+1

确定饼干*是*禁用?你是怎么做到的? – skaffman 2011-01-13 19:12:55

回答

2

jsessionid当禁用Cookie只附加当会话已经在服务器端创建(并因此在服务器端需要以某种方式通知客户有关这一点,其中一个cookie会是默认方法)。如果没有创建会话,则没有任何附加jsessionid的要点。

尝试将以下行添加到JSP的顶部,至少在调用<c:url>行之前。它不仅为您打印/调试会话ID,还会隐式创建会话(如果尚未完成)。

${pageContext.session.id} 

这样做仅用于测试目的。如果它有效,那么问题的原因是没有会话的手段。保持原样。没有必要不必要地创建会话。对于每当有会话并且浏览器不支持cookie的情况,c:url都可以正常工作。


顺便说一句,以验证Cookie被禁用确实由Firebug跟踪请求头。如果请求中没有Cookie标题,即使服务器在响应中设置了一个Set-Cookie标题,那么这意味着Cookie确实在客户端被禁用。

0

我觉得BalusC是正确的,但是强制在服务器上创建一个会话,你可以在你的JSP的顶部添加一个指令页,像这样:

<%@ page session="true" %>