2012/06/23

firefox處理cookie的問題

之前在研究HTTP時,瞭解到各家瀏覽器在實作HTTP時其實並不相同。最近的一個奇怪案例,最後找出的原因…居然是因為瀏覽器對於cookie處理不同~

為了解釋,假設一下案例
  • 現在時間是 2012/6/1 11:00
  • 主機時間是 2012/6/1 03:00(主機的時間慢了八小時)
  • cookie expire time為六小時

當server端的程式產生一個cookie,cookie expire time為六小時。於是,程式取得主機時間2012/6/1 03:00,加上expire time 六小時候,這個cookie將在2012/6/1 09:00 逾期。

此時,client端的時間是2012/6/1 11:00。因此,當瀏覽器收到這個cookie時,對瀏覽器而言,理論上已經超過了逾期時間(2012/6/1 09:00)三小時。不幸的是…各家瀏覽器的結果不同…

測試了Firefox、IE、Chrome、safari這四家瀏覽器後。只有Firefox的行為不同,居然會繼續使用這個已經逾期的cookie。

為了測試的方便,我將cookie expire time 設定為一分鐘。下圖,則是以VM作測試的結果…
response的http heade,注意date和set-cookie

由response的http header中,可見主機時間為 00:33:37,set-cookie 的時間為 00:34:37。測試時,我PC(client)上的時間約11:30。但…唯獨Firefox(ver 13.0.1)卻不認為該cookie逾時(expire)。這是Firefox的BUG嗎?

沒有留言:

Related Posts Plugin for WordPress, Blogger...