可以从4xx响应中设置cookie吗?

时间:2014-02-04 13:46:33

标签: http cookies http-status-code-406

当我检测到特定的客户端错误时,我只是尝试设置(实际上,删除 - 通过max age设置为0)会话cookie。我使用的HTTP响应来自4xx类别(例如401,406等)。

在服务器端生成的这种响应中,cookie删除工作正常:

            Response resp = Response.status(Response.Status.OK).header(
                "Set-Cookie",
                cookieName+"="+sessionId+"; "+
                "Version=1; Max-Age=0; Path=" + cookiePath + "; " +
                "Expires=Thu, 01 Jan 1970 00:00:00 GMT").entity("").build();

......但是失败了:

            Response resp = Response.status(Response.Status.UNAUTHORIZED).header(
                "Set-Cookie",
                cookieName+"="+sessionId+"; "+
                "Version=1; Max-Age=0; Path=" + cookiePath + "; " +
                "Expires=Thu, 01 Jan 1970 00:00:00 GMT").entity("").build();

(唯一区别:200 => 406)。

使用4xx响应无法设置cookie吗?

1 个答案:

答案 0 :(得分:4)

RFC 6265声明接受必须的Cookie:

  

Origin服务器可以使用any发送Set-Cookie响应头      响应。用户代理可以忽略包含的Set-Cookie头      具有100级状态代码的响应但必须处理Set-Cookie      其他回复中包含的标题(包括400-的回复)      和500级状态代码)。源服务器可以包括多个      单个响应中的Set-Cookie标头字段。存在的      Cookie或Set-Cookie标头字段不排除HTTP缓存      存储和重用响应。