Why is "Expires" 1981?
Asked Answered
K

4

51

My CRON Job returned an error that CRON job did not work. In that this was there:

Set-Cookie: PHPSESSID=2t2drultihqci4em15nbfmeb63; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-type: text/html

I am wondering why is Expires set to "1981". What is the significance?

Kite answered 19/11, 2011 at 13:52 Comment(3)
Personally, I'd put 1984 there, just to screw with people's heads. ;)Anticholinergic
Why? What's the significance of 1984?Pengelly
See en.wikipedia.org/wiki/Nineteen_Eighty-Four for a common connotation of 1984Plonk
S
113

It's an attempt to disable caching.

The date is the birthday of the developer Sascha Schumann who added the code.

From session.c:

Authors: Sascha Schumann <[email protected]> 
         Andrei Zmievski <[email protected]> 

// ...

CACHE_LIMITER_FUNC(private)
{
    ADD_HEADER("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
    CACHE_LIMITER(private_no_expire)(TSRMLS_C);
}
Sotelo answered 19/11, 2011 at 13:55 Comment(7)
Then happy birthday to him! ;-PAnticholinergic
Omfg. I could've searched on for hours. - Thanks! See php.net/manual/de/function.session-cache-limiter.phpCravens
php.net/manual/en/function.session-cache-limiter.php add session_cache_limiter('public') before session_start() to enable cachingPandemonium
Was Sascha Schumann drunken or what??? Is this the fine art of programming to add private birthdays into Source Code???Collimore
@Collimore Why is it a such big problem?Delatorre
@klenium: Because it is not intuitive! It should be a default Date like: 1.1.1900 etc. Then you not need such a thread.Collimore
For anyone wanting to see the commit itself, the GitHub commit can be viewed here in the PHP source, committed on Dec 12, 1999: github.com/php/php-src/commit/…Medea
W
10

HTTP Expires header

http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html

It is set to negative or past value, to prevent caching of response.

Quite common usage of this header.

Woorali answered 19/11, 2011 at 13:54 Comment(2)
Yes...but as I know a session must expire at some point in time(unless I am wrong)....having the expiration date to 1981 how can we achieve that?Persis
@DimitrisPapageorgiou obviously, session will expire on different terms (and server-side session might last longer than user-side session). Expires header only tells user-browser, to not cache the response and request given URL again, if user requests it.Woorali
L
8

I think you are using session_cache_limiter before calling session_start. If argument is private or no-cache the result is setting the Expires header to the time you have mentioned. Refer to this document for more information.

Linkboy answered 19/11, 2011 at 14:6 Comment(0)
A
0

Somebody just put expires = date('-30 years') (paraphrased) in his code to make really sure the content is set as expired and not cached.

Anticholinergic answered 19/11, 2011 at 13:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.