2012-01-03 64 views
1

我有我的GWT代碼在index.jsp頁面,當我查看頁面信息(安全/ cookie)時,我看到JSESSIONID cookie分配給'subdomain.mysite.com'。爲什麼我無法在客戶端獲取GWT中的JSESSIONID cookie?

當我的客戶端代碼,我這樣做:

Window.alert("cookies=" + Cookies.getCookieNames().toString); 

我看到被分配到「mysite.com」兩個cookie,但我沒有看到JSESSIONID。該網頁的當前網址是'subdomain.mysite.com' - 它不應該給我cookie嗎? 當我刷新或在點擊事件中顯示cookie時,我仍然看不到JSESSIONID cookie。

爲什麼我不能在客戶端?

回答

7

您的應用程序服務器是否配置爲在JSESSIONID cookie上設置HTTPOnly標誌?如果是這樣,客戶端代碼將無法看到它

https://www.owasp.org/index.php/HttpOnly

它總體上是好的安全習慣設置中HTTPOnly標誌 - 你可以解釋,爲什麼要在客戶端訪問JSESSIONID的cookie碼?

+0

我打算通過會話ID爲的一部分服務器調用來保存服務器端的一些記錄工作。 – Kieveli 2012-01-03 14:56:46

+0

您不需要手動傳遞會話ID作爲服務器調用的一部分,因爲它會自動附加到HTTP請求。 – 2012-01-03 15:40:58

+0

這是真的......我想如果我通過它會很難欺騙...我試圖太辛苦。 – Kieveli 2012-01-03 16:35:03

0

如Chi所解釋的那樣,如果cookie上設置了HTTPOnly標誌,那麼的確會發生。如果你唯一的目的是爲了獲得在JavaScript方面當前會話ID,那麼你可以只讓JSP/EL打印出來,就好像它是一個JS變量:

<script>var jsessionid = '${pageContext.session.id}';</script> 
相關問題