Solved

Internet Explorer 6 is not getting the multiple cookie of more than 3500 characters

Posted on 2004-09-25
18
233 Views
Last Modified: 2011-10-03
Hi,

I am trying to store data on my system in the form of cookies from java script ,
I have read that one cookie size shouild not be more than 4KB therefore I am
breaking the data into size of 4000 chars whenever it is greater than 4000 chars
and creating multiple cookies from that data and storing it.

But when I am trying to get back these cookie using "window.document.cookie"
in java script it is returning "null" in internet explorer6 where as same code is working
on netscape 7.

However when I am storing only one cookie of less than 4096 chars IE is storing and
getting back that value properly.

Problem is with multiple cookies, I am checking the size of all the cookies being stored
and nobody's size is increasing more than 4096 chars.

Has any body faced the same problem ?

thanks
Suneet
0
Comment
Question by:suneet123
  • 7
  • 6
  • 3
18 Comments
 
LVL 63

Expert Comment

by:Zvonko
ID: 12149633
There are two limits: 4096 bytes for ALL cookies in one realm, or maximum of twenty cookies for one realm (host).
0
 

Author Comment

by:suneet123
ID: 12149665
ok but why it is not working on ie6 ?
0
 

Author Comment

by:suneet123
ID: 12149673
ok you mean we can not store more than 4096 bytes from one host.
But it is working on netscape 7.
0
 
LVL 63

Accepted Solution

by:
Zvonko earned 75 total points
ID: 12149924
Sorry, it seams I was wrong with the grand total of 4096 bytes for one host.
Look here for the limits:
http://www.cse.ohio-state.edu/cgi-bin/rfc/rfc2109.html

Minimum implementations requirments for a browser are described in section: 6.3 Implementation Limits
If some browser version provides more, then it is ok.
But every browser should support grand total of 300 cookies, 20 cookies per domain and 4096 bytes each cookie.
0
 
LVL 15

Expert Comment

by:Thogek
ID: 12152297
It might help to post the actual code you are using to set and read the cookie(s).
0
 

Author Comment

by:suneet123
ID: 12167994
Hi, my simple code goes below, I am running it as
jsp on tomcat 4.17....


========================================
<HTML>
      <HEAD><TITLE>TEST COOKIE JAVA SCRIPT</TITLE>

      
 <SCRIPT LANGUAGE="JAVASCRIPT">
      // I am running this code as jsp on tomcat4.17
      var emailaddress="Azzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzA";
      
      alert("email length="+emailaddress.length);

      var password="Bzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzB";
      
      alert("password length="+password.length);
      
      document.cookie="emailaddress="+emailaddress+";path=/;expires=Wed, 29-09-04 12:50:50 GMT";
      document.cookie="password="+password+";path=/;expires=Wed, 29-09-04 12:50:50 GMT";
      
      //here it returns cookie in the form of some string ,on ie6 if and only
      //if size of both cookies is less than 4096 chars.
      //whereas each cookie may comtain upto 4096 chars.
      // on netscape 7 it is working.

      alert(document.cookie);

      if(document.cookie != ""){
            var cEmail=returnCookie("emailaddress");
            if(cEmail == null)
                  alert("Cookie emailaddress not found");
            else
                  document.write("<br>Email="+cEmail);
            
            var cPass=returnCookie("password");
            if(cPass == null)
                  alert("Cookie password not found");
            else
                  document.write("<br>Password="+cPass);
      }
      else
            document.write("<br>No cookie found");

      function returnCookie(cookieName){
            var cooks=document.cookie;
            var start = cooks.indexOf(cookieName + "=");
            if (start == -1)
            {
                  return null;
            }
            start = start + (cookieName + "=").length;
            var end = cooks.indexOf(';', start);
            if (end == -1)
            {
                  end = cooks.length;
            }
            var cookieValue = cooks.substring(start, end);
            return cookieValue;
      }
</SCRIPT>

</BODY></HTML>
===========================================
0
 

Author Comment

by:suneet123
ID: 12176719
Hi,

my problem is if i am storing two
cookies of 2500 chars each using ie6 it is storing those values
but it is not getting back those value using 'document.cookie'.

whereas according to link provided by you each name=vale pair
can contain upto 4KB.

if i am storing two cookie of combined size less than 4KB then
it is getting back those values.

I think problem is with ie6's javascript engine, beacuse i am getting back those values using java on ie6.



thanks
0
 
LVL 63

Expert Comment

by:Zvonko
ID: 12176897
Not each name=value pair can be 4KB. The grand total of a Domain in the escape() form has to be not more then 4KB.
So if one cookie is 2500 chars you cannot have a second cookie with the same size. Second cookie can have maximum of 1596 characters. (including cookie name and = character).
0
Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

 

Author Comment

by:suneet123
ID: 12188329
I am storing one name=value pair per cookie then we should be able to store 4KB per cookie
and it should not have any problen in getting back.

I am giving giving below the ref. of your link .
==========
6.3 Implementation Limits
Practical user agent implementations have limits on the number and size of cookies that they can store. In general, user agents' cookie support should have no fixed limits. They should strive to store as many frequently-used cookies as possible. Furthermore, general-use user agents should provide each of the following minimum capabilities individually, although not necessarily simultaneously:


      * at least 300 cookies

read it carefully =========>

      * at least 4096 bytes per cookie (as measured by the size of the
        characters that comprise the cookie non-terminal in the syntax
        description of the Set-Cookie header)
=====================>

      * at least 20 cookies per unique host or domain name
User agents created for specific purposes or for limited-capacity devices should provide at least 20 cookies of 4096 bytes, to ensure that the user can interact with a session-based origin server.



0
 
LVL 63

Expert Comment

by:Zvonko
ID: 12188404
That is all theory.
When you do this:
     document.cookie="emailaddress="+emailaddress+";path=/;expires=Wed, 29-09-04 12:50:50 GMT";
     document.cookie="password="+password+";path=/;expires=Wed, 29-09-04 12:50:50 GMT";

Then you get ONE cookie where emailaddress and password are followed by an equal character, the value, one semicolon character and one blanks. All that in ONE cookie.

And nowhere in the cookie descriptin is written that you can have a name and value pair. It's all a cookie.
Or can you tell me what the maximum cookie name length can be?
0
 
LVL 63

Expert Comment

by:Zvonko
ID: 12188506
Sorry, I have just read the description again and see that I was aware only of some old cookie version.
There are of course cookie names and value pairs. And the cookies are separated by comas or semicolons.
But that does not help you at all. You have to live with the browsers you get for free or you are free to build your own browser version.

Now, my main solution with cookie problems was to escape() the cookie values. Even a blank in the value brings problems in cookie sent to server and responded cookies back.
As you see in the description are the cookies NOT driven by the browser, but by the server. Now when the browser changes or creates some cookie values which the server undrestand in some other way (for example because of the blanks in the value) then are the cookies responded back (and stored localy) in that way how the Server does see the cookies (or even does NOT see some).

0
 
LVL 15

Assisted Solution

by:Thogek
Thogek earned 75 total points
ID: 12191342
More about Internet Explorer's specific support for numbers and sizes of cookies: http://support.microsoft.com/default.aspx?scid=kb;EN-US;306070

More about Netscape Navigator's specific support for numbers and sizes of cookies: http://wp.netscape.com/newsref/std/cookie_spec.html (about halfway down the page)
0
 
LVL 63

Expert Comment

by:Zvonko
ID: 12192377
Thanks, I am still not outdated :-)

IE limits: "one name-value pair of 4 kilobytes (KB) or as up to 20 name-value pairs that total 4 KB"

0
 
LVL 15

Expert Comment

by:Thogek
ID: 12192527
Yup.  They both seem to be quoting the same standard numbers.  :-)
0
 

Author Comment

by:suneet123
ID: 12197235
Hi both,

I would like to share one more interesting thing with you is when I am trying to get same cookies i.e.
emailaddress and password from java using Cookie cookie[]=request.getCookies(); and then
looping through all the cookies , I am getting all the values correctly using tomcat as webserver and ie6 as the
browser.

It means problem is not with ie6 but with its javascript engine , bcoz I am not getting those values when I am
calling 'document.cookie' which is javascript statement.

0
 
LVL 63

Expert Comment

by:Zvonko
ID: 12197607
You can get back cookies on tomcat only if the browser recognised them correctly.
And on what is based your conclusion that the scripting engine is not getting the second cookie?
As I stated before, all cookies are presented in one string in JavaScript: alert(document.cookie);
So what do you miss in that string?

By the way, a nice trick to see all cookies, for exaple just now all EE cookies, is to put this into browser address bar:
javascript:document.write(document.cookie)


0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

In this article, we'll look how to sort an Array in JavaScript, including the more advanced techniques of sorting a collection of records either ascending or descending on two or more fields. Basic Sorting of Arrays First, let's look at the …
In Part 1 (http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/A_7849-Hex-Maze.html) we covered the hexagonal maze basics -- how the cells are represented in a JavaScript array and how the maze is displayed.  In this part, we'…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now