【发布时间】:2014-02-04 13:46:32
【问题描述】:
当我检测到特定的客户端错误时,我刚刚尝试设置(实际上是通过将最大年龄设置为 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是真的吗?
【问题讨论】:
-
你测试过多个浏览器吗?如果
Set-Cookie标头确实存在,您是否检查过浏览器的开发人员工具?这也可能与Response类的实现有关。
标签: http cookies http-status-code-406