【问题标题】:Why no `Set-Cookie` headers in response?为什么响应中没有“Set-Cookie”标头?
【发布时间】:2011-08-01 08:28:30
【问题描述】:

我发现有时候浏览器无法从我的网站获取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)

但是当我使用浏览器IE6Firefox访问时,headers是:

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。为什么他们是不同的反应?哪里错了?以及如何解决?

【问题讨论】:

    标签: curl httpresponse setcookie chunked


    【解决方案1】:

    可能是 cookie 已设置,因此 Set-Cookie 不会包含在 Response 标头中。

    查看 Request 标头的样子:

    您可以使用Wireshark 进行网络嗅探。另一个很好的工具是 FireBug 插件:它允许您检查、设置和删除 cookie。

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

    【讨论】:

    • 终于找到了原因:我在response.getOutputStream.write(...)之后调用了response.addCookie(...)。我应该总是在那之前调用它。
    • 啊,所以你的 cookie 不在标题中……它掉在了地板上;)
    • 但是.. 那么为什么它可以与 curl 一起使用呢?顺便说一句,我也有同样的问题。适用于 httpie,但不适用于 chrome 76.0.3809.100(官方构建)(64 位)。我还确保在发出请求之前已删除所有现有的 cookie。
    猜你喜欢
    • 2018-10-22
    • 2017-03-01
    • 2014-06-22
    • 2011-01-28
    • 2011-12-14
    • 2017-08-30
    • 2019-03-21
    • 1970-01-01
    • 2019-08-01
    相关资源
    最近更新 更多