2011-04-08 68 views
1

我發現有時瀏覽器不能從我的網站獲得的cookies,所以我用curl檢查頭,並且該信息是:爲什麼沒有`Set-Cookie`標頭作爲迴應?

C:\Documents and Settings\jack>curl http://localhost -I 
HTTP/1.1 200 OK 
Expires: Thu, 01-Jan-1970 00:00:00 GMT 
Set-Cookie: SCALAEYE_SESSION="a57cf8ebdfc379da91ad17d1d1eac706c25ae4c3-%3Citems%3E%3C%2Fitems%3E";Path=/ 
Set-Cookie: SCALAEYE_FLASH="%3Citems%3E%3C%2Fitems%3E";Path=/ 
Content-Length: 121665 
Server: Jetty(6.1.26) 

但是當我使用的瀏覽器IE6Firefox參觀,標題是:

Response Headersview source 
Date Fri, 08 Apr 2011 08:48:09 GMT 
Transfer-Encoding chunked 
Server Jetty(6.1.26) 

你可以看到有沒有Set-Cookie標題,這會產生問題。我的服務器是Jetty 6.1.26。爲什麼他們有不同的迴應?哪裏錯了?以及如何解決它?

回答

6

可能是因爲cookie已被設置,因此Set-Cookie將不會包含在響應標頭中。

請求頭的樣子:

您可以網絡嗅探使用Wireshark以做到這一點。另一個好工具是FireBug插件:它允許您檢查,設置和刪除cookie。

最後一點是您的服務器控制着Set-Cookie標頭:如果瀏覽器不提供Cookie標頭,服務器可以決定發送一個Set-Cookie。然後你的瀏覽器決定通過發回一個Cookie頭供服務器使用。如果您在瀏覽器上禁用了Cookie,它將不會將Cookie標頭髮送回服務器。

+0

終於,我找到了原因:我在'response.getOutputStream.write(...)'之後調用了'response.addCookie(...)'。我應該在這之前一直這樣稱呼它。 – Freewind 2011-04-13 03:23:09

+4

啊,所以你的餅乾不在頭上......它落在地板上;) – 2011-04-13 19:27:16