2013-02-05 12 views

Odpowiedz

5

Tak, może zwrócić 204. Lub 400. Lub 400. Nie ma ogólnych ograniczeń co do kodów statusu, które metoda może zwrócić.

Należy również pamiętać, że nadszedł czas, aby przestać patrzeć na RFC 2616. Zobacz http://trac.tools.ietf.org/wg/httpbis/trac/wiki.

+1

Prawdopodobnie drugie, "Or 400", powinno być "Lub 404" (lub coś innego niż 400). – 76484

+0

Co myślisz o innej odpowiedzi tutaj?Choć wydaje się, że w praktyce przeglądarki są "OK" z 204 FWIW ... de facto standardem, aby wygrać! :) – rogerdpack

7

RFC 2616 mówi:

A 200 odpowiedź powinna ...

...

Jeśli ciało nie jest wliczone odpowiedź, odpowiedź musi zawierać pole Content-Length z wartość pola "0".

co rzeczywiście nie jest jasne, czy 200 odnosi się do całego akapitu, czy tylko do pierwszego zdania. Jeśli chcesz grać bezpiecznie, musisz pozwolić MUSI mieć pierwszeństwo (i nie będzie cię to kosztowało dużo).

RFC 7231, RFC 2616, które obsoletes, zmienił sformułowanie

serwerze generowania udaną odpowiedź na opcje powinny ...

...

Serwer musi wygenerować Pole długości treści o wartości "0", jeśli w odpowiedzi nie ma być wysyłane żadne ciało ładunku.

, która sprawia, że ​​ostatnie zdanie stosuje się w sensie ogólnym do statusów 2xx, a kryterium MUSI ma pierwszeństwo.

Tak więc, długość treści MUSI zostać wysłana. Ale Content-Length nie może zostać wysłany z 204:

RFC 2616 mówi tak:

Obecność wiadomości-ciała w żądaniu jest sygnalizowana poprzez włączenie Content-Length lub Pole nagłówka Transfer-Kodowanie ...

... Wszystkie odpowiedzi 1xx (informacyjne), 204 (bez zawartości) i 304 (niezmodyfikowane) NIE MOGĄ zawierać treści wiadomości.

i RFC 7230 wyjaśnia to także:

Serwer NIE wysłać pole nagłówka Content-Length w jakiejkolwiek odpowiedzi z kodem statusu 1xx (informacyjne) lub 204 (No Content).

Tak to rozumiem.

Powiązane problemy