java – C:url在禁用cookie时不附加jsessionid

我试过了:

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

但是当我检查禁用cookie的页面时,不会附加jsessionid.
有谁知道为什么会这样?

最佳答案 只有当cookie被禁用时以及在服务器端创建会话时才会附加jsessionid(因此服务器端需要以某种方式通知客户端,因为cookie是默认方法).如果没有创建会话,则无法附加jsessionid.

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

${pageContext.session.id}

这样做仅用于测试目的.如果它有效,那么问题的原因是没有会话的方法.保持原样.没有必要不必要地创建会话.对于每当会话和浏览器不支持cookie的情况,c:url将正常工作.

顺便说一句,要验证cookie是否确实被禁用,请在Firebug之前跟踪请求标头.如果请求中没有Cookie标头,即使服务器在响应中设置了Set-Cookie标头,则表示cookie是确实在客户端被禁用了.

点赞