firefox處理cookie的問題
之前在研究HTTP時,瞭解到各家瀏覽器在實作HTTP時其實並不相同。最近的一個奇怪案例,最後找出的原因…居然是因為瀏覽器對於cookie處理不同~
為了解釋,假設一下案例
當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 header中,可見主機時間為 00:33:37,set-cookie 的時間為 00:34:37。測試時,我PC(client)上的時間約11:30。但…唯獨Firefox(ver 13.0.1)卻不認為該cookie逾時(expire)。這是Firefox的BUG嗎?
為了解釋,假設一下案例
- 現在時間是 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 header中,可見主機時間為 00:33:37,set-cookie 的時間為 00:34:37。測試時,我PC(client)上的時間約11:30。但…唯獨Firefox(ver 13.0.1)卻不認為該cookie逾時(expire)。這是Firefox的BUG嗎?
留言