- From: Foteos Macrides <MACRIDES@sci.wfbr.edu>
- Date: Tue, 29 Jul 1997 11:57:55 -0500 (EST)
- To: cuckoo.hpl.hp.com@http-wg.uucp, http-state@lists.research.bell-labs.com
dmk@research.bell-labs.com (Dave Kristol) wrote: >[...] >The one rub is how to handle gracefully a transition from old-style >("Netscape") cookies to new-style cookies. The scenario I just described >above locks the dialog into either old- or new-style cookies, because the >server only sends one header, either Set-Cookie or Set-Cookie2. What if >the user upgrades the UA to one that understands new-style cookies, but the >current cookie dialogs it engages in use old-style cookies? We would like >the UA and server to begin exchanging new-style cookies. But neither side >knows that the other understands new-style cookies. Who goes first to make >their capabilities known? > >I can think of two approaches, and I'm sure there are others. One approach >is just to have the server periodically send both Set-Cookie and >Set-Cookie2 as a probe. The cookie value might, for example contain the >timestamp of the last contact with the server, and the server could send >both headers once each day/week/whatever. > >Simpler still, a UA that supports new-style cookies should be sending > Cookie: $Version=0 >followed by other cookie values. If the server understands new-style >cookies, it could respond to further requests with Set-Cookie2. I just tried sending Cookie: $Version=0; realcookie=realvalue for: Linkname: HTML Form-Testing Home Page URL: http://www.research.digital.com/nsl/formtest/home.html and got back: Form Test Results for General1 Test results: * NetscapeCookie - Bad HTTP Cookie value: $Version=0; COOKIE=testvalue [...] The problem is that you're counting on $Version=0; being treated as a bad cookie by the old server or script, and don't know what error handling it's using. It indeed would be desireable for the UA to communicate that it supports version 1 or greater cookie handling in those cases for which it is using cached version 0 cookies and doesn't yet know if the server or script can handle new cookies. The simplest, most efficient way might be to send: Cookie2: $Version="1" Cookie: realoldnameA=realoldvalueA; realoldnameB=realoldvalueB[; ...] If it's an old server or script, the Cookie2 request header will be ignored. Otherwise, the server or script will use Set-Cookie2, the UA will not send the Cookie2 probe, and use Cookie: $Version="1"; ... so the updating is mutually know by the State Management partners with negligable excess network traffic having been expended, and with both the server/script and UA thereafter enjoyed all the benefits of the modern State Management protocol. Fote ========================================================================= Foteos Macrides Worcester Foundation for Biomedical Research MACRIDES@SCI.WFBR.EDU 222 Maple Avenue, Shrewsbury, MA 01545 =========================================================================
Received on Tuesday, 29 July 1997 11:55:33 UTC