Http 可以从4xx响应设置cookies吗?
当我检测到一个特定的客户端错误时,我只是尝试设置(实际上,删除-通过最大年龄设置为0)一个会话cookie。我使用的HTTP响应来自4xx类别(例如401、406等) cookie删除在服务器端生成的此类响应中工作正常:Http 可以从4xx响应设置cookies吗?,http,cookies,http-status-code-406,Http,Cookies,Http Status Code 406,当我检测到一个特定的客户端错误时,我只是尝试设置(实际上,删除-通过最大年龄设置为0)一个会话cookie。我使用的HTTP响应来自4xx类别(例如401、406等) cookie删除在服务器端生成的此类响应中工作正常: Response resp = Response.status(Response.Status.OK).header( "Set-Cookie", cookieName+"="+sessio
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)
Cookie不能设置为4xx响应是真的吗?声明必须接受这些Cookie:
源服务器可以发送一个带有任何
答复。用户代理可以忽略中包含的设置Cookie头
具有100级状态代码但必须处理设置Cookie的响应
其他响应中包含的标题(包括包含400个字符的响应)-
和500级状态代码)。一个源服务器可以包括多个
在单个响应中设置Cookie头字段。出现
Cookie或Set-Cookie标头字段不排除HTTP缓存
从存储和重用响应
您是否使用多个浏览器进行过测试?如果
Set Cookie
标题确实存在,您是否已检查浏览器的开发人员工具?这可能还与Response
类的实现有关。我知道这很奇怪-感谢您证明这看起来像是一个浏览器错误(我正在使用Firefox26/Linux进行编码)。