Можно ли установить файлы cookie из ответов 4xx?

Я только что попытался установить (на самом деле, удаляя - через максимальный возраст, установленный в 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?

1 ответ

Решение

RFC 6265 утверждает, что эти куки ДОЛЖНЫ быть приняты:

Исходные серверы МОГУТ отправить заголовок ответа Set-Cookie с любым ответом. Пользовательские агенты МОГУТ игнорировать заголовки Set-Cookie, содержащиеся в ответах с 100-уровневыми кодами состояния, но ДОЛЖНЫ обрабатывать заголовки Set-Cookie, содержащиеся в других ответах (включая ответы с кодами состояния 400 и 500). Исходный сервер может включать в себя несколько полей заголовка Set-Cookie в одном ответе. Наличие поля заголовка Cookie или Set-Cookie не мешает HTTP-кешам хранить и повторно использовать ответ.

Другие вопросы по тегам