JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Servlet/JSP 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:Cookie會爆掉嗎??規格是4k [Re:atticcat]
atticcat

There is no cookie



發文: 702
積分: 4
於 2006-10-18 22:30 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
寫了一隻簡單的JSP來測試..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<%@ page language="java" contentType="text/html; charset=BIG5"
    pageEncoding="BIG5"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Insert title here</title>
</head>
<body>
<%
  Cookie[] cookies = request.getCookies();
  if(cookies!=null){
      for(int i=0;i<cookies.length;i++){
          String name = cookies[i].getName();
          String value = cookies[i].getValue();
          String domain = cookies[i].getDomain();
          String path = cookies[i].getPath();
          int maxAge = cookies[i].getMaxAge();
%>
 <%=i+1%>. Cookie:<%=name%>, domain:<%=domain%>, path:<%=path%>, maxAge:<%=maxAge%>, valueLength:<%=value.length()%> <br/>
<%             
      }
  }
%>
<script>
function assignCookie(){
  var csize = parseInt(document.getElementById("cookieLength").value);
  var cname = document.getElementById("cookieName").value;
  var cvalue = "";
  for(var i=0;i<csize;i++){
    cvalue += "A";
  }
  setCookie(cname,cvalue);
  return true;
}
 
function setCookie(name, value, days, path, domain, secure) {
  var expires = -1;
  if(typeof days == "number" && days >= 0) {
    var d = new Date();
    d.setTime(d.getTime()+(days*24*60*60*1000));
    expires = d.toGMTString();
  }
  value = escape(value);
  document.cookie = name + "=" + value + ";"
    + (expires != -1 ? " expires=" + expires + ";" : "")
    + (path ? "path=" + path : "")
    + (domain ? "; domain=" + domain : "")
    + (secure ? "; secure" : "");
}
</script>
<form method="post" >
  Cookie Name:<input type="text" name="cookieName" id="cookieName" value="test"/><br>
  Cookie Length:<input type="text" name="cookieLength" id="cookieLength" value="3471"/><br>
  <input type="submit" value="submit" onclick="return assignCookie()"/> 
</form>
</body>
</html>


在FF
1. Cookie:test, domain:null, path:null, maxAge:-1, valueLength:3471
2. Cookie:JSESSIONID, domain:null, path:null, maxAge:-1, valueLength:32
長度到3471,在submit後,會變成空白頁面

在IE
1. Cookie:test, domain:null, path:null, maxAge:-1, valueLength:3456
2. Cookie:JSESSIONID, domain:null, path:null, maxAge:-1, valueLength:32
長度到3456,在submit後,會變成空白頁面

所以cookie目前在FF及IE上確實會發生4k的限制
而量不是單一cookie的size,而是每次送出的總cookie的大小限制在4k

我的頁面會出錯是因為我的頁面設cookie時忘了指定path.
所以預設的path會是jsp的目錄
例如,/test/cookieTest.jsp 其cookie路徑會是/test/
所以當我玩了太多頁面後,每一頁所累計的cookie都會傳送到server.
結果當然就在玩太多頁後超過4k了..

目前的解法就是指定path到JSP,
例如,/test/cookieTest.jsp 設定其cookie路徑會是/test/cookieTest.jsp

這樣就會只有這個cookie會被送到Server.
這樣子應該能解掉我目前玩太久就會掛的問題...

不過如果遇到畫面上的樹太深太廣的話...
還是有可能單一頁面的cookie就超過4k了...>____<
看來最終解法還是要轉成用dyanmic input來傳送才行...


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
1926 Cookie會爆掉嗎??規格是4k atticcat 478 2006-10-18 09:57
1417 Re:Cookie會爆掉嗎??規格是4k koji 51 2006-10-18 11:47
1505 Re:Cookie會爆掉嗎??規格是4k atticcat 445 2006-10-18 19:10
1802 Re:Cookie會爆掉嗎??規格是4k atticcat 2707 2006-10-18 22:30
» JWorld@TW »  Servlet/JSP 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8