一个响应中可以设置多少个Cookie?

时间:2018-07-02 23:04:43

标签: java tomcat servlets cookies httpresponse

单个http响应中可以设置的Cookie数量上限吗?如果是,多少?


因为我试图在一个响应中创建2个cookie,由于某种原因,只能创建一个。我正在使用下面的代码。

Cookie cookie = new Cookie("wNote", "1530571761964");
cookie.setMaxAge(2592000);
cookie.setPath("/myWebsite/");
response.addCookie(cookie);

另一个cookie是JSESSIONID,它由服务器自动创建。在Set-Cookie下的响应标题中,我只能看到JSESSIONID

  • Apache Tomcat 8.0.27
  • Google Chrome 67.0

1 个答案:

答案 0 :(得分:3)

如果您正在使用Tomcat,则 HttpServletResponse.addCookie(javax.servlet.http.Cookie)中只有一个Cookie ,但是此方法可以调用多次:

  

该servlet通过使用HttpServletResponse.addCookie(javax.servlet.http.Cookie)方法将cookie发送到浏览器,该方法将字段添加到HTTP响应标头中,以一次一次向浏览器发送cookie。

     

可以多次调用此方法以设置多个cookie。

     

该浏览器应为每个Web服务器支持20个cookie,总共300个cookie,并且每个cookie的大小可能限制为4 KB。   
Cookies Doc


可以更深入地了解此Cookie。我检查了RFC 2109

  

实际的用户代理实现对数量和数量有限制   他们可以存储的Cookie的大小。通常,用户代理的Cookie   支持应该没有固定的限制。他们应该努力将其存储为
  尽可能多的常用Cookie。此外,通用
  用户代理应提供以下每个最低功能   单独,但不一定同时:

     
      
  • 至少300个Cookie
  •   
  • 每个cookie至少4096个字节(根据       语法中包含cookie非终结符的字符       Set-Cookie标头的说明)
  •   
  • 每个唯一主机或域名至少20个Cookie
  •