2011-01-13 22 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" %>