Curl 为什么响应中没有“Set Cookie”头?

Curl 为什么响应中没有“Set Cookie”头?,curl,httpresponse,setcookie,chunked,Curl,Httpresponse,Setcookie,Chunked,我发现有时浏览器无法从我的网站获取cookies,因此我使用curl检查标题,信息如下: 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%2Fite

我发现有时浏览器无法从我的网站获取cookies,因此我使用
curl
检查标题,信息如下:

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)
但是当我使用浏览器
IE6
Firefox
访问时,标题是:

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

您可以看到没有
设置Cookie
头,这会产生问题。我的服务器是Jetty 6.1.26。为什么他们的反应不同?哪里错了?以及如何修复它?

可能是cookie已经设置,因此
设置cookie
将不会包含在响应标题中

查看请求标题的外观:

您可以使用网络嗅探来实现这一点。另一个很好的工具是插件:它允许你检查、设置和删除cookie


最后一点是服务器控制
设置Cookie
头:如果浏览器不提供
Cookie
头,服务器可以决定发送
设置Cookie
。然后,您的浏览器决定通过发送回服务器使用的
Cookie
头来接受。如果浏览器上禁用了Cookie,它将不会将Cookie头发送回服务器。

最后,我找到了原因:我在
response.getOutputStream.write(…)之后调用了
response.addCookie(…)
。我应该在那之前叫它。啊,所以你的饼干不在标题中。。。它掉在地板上;)但是那为什么它和curl一起工作?顺便说一下,我也有同样的问题。适用于httpie,但不适用于chrome 76.0.3809.100(官方版本)(64位)。我还确保在发出请求之前删除了所有现有的cookie。