Istnieje ogólne nieporozumienie (i niewłaściwe użycie) 403 Forbidden
: nie powinno ono zdradzać niczego, co serwer myśli o żądaniu. Jest specjalnie zaprojektowany, aby powiedzieć:
Rozumiem, o co prosisz, ale nie zamierzam obsłużyć żądania, bez względu na to, czego spróbujesz. Więc przestań próbować.
Każdy UA lub klient powinien interpretować to w ten sposób, że żądanie nigdy nie zadziała i odpowiednio odpowiedzieć.
Ma to wpływ na klientów obsługujących żądania w imieniu użytkowników: jeśli użytkownik nie jest zalogowany lub się pomyli, klient obsługujący żądanie powinien odpowiedzieć: „Przepraszam, ale nic nie mogę zrobić” po raz pierwszy dostaje 403
i przestaje obsługiwać przyszłe żądania. Oczywiście, jeśli chcesz, aby użytkownik nadal mógł żądać dostępu do swoich danych osobowych po awarii, jest to zachowanie wrogie użytkownikowi.
403
Jest to w przeciwieństwie do 401 Authorization Required
, który ma oddać, że serwer będzie obsługiwać żądania dopóki przechodzą odpowiednie uprawnienia. O tym zwykle myślą ludzie, kiedy słyszą 403
.
Kontrastuje to również z 404 Page Not Found
tym, jak zauważyli inni, nie tylko po to, by powiedzieć „nie mogę znaleźć tej strony”, ale także po to, by zasugerować klientowi, że serwer nie wysyła żadnych roszczeń o sukces lub porażkę dla przyszłych żądań.
Za pomocą 401
i 404
, serwer nie mówi nic klientowi ani UA o tym, jak powinni postępować: mogą próbować w nadziei na inną odpowiedź.
404
Jest to zatem odpowiedni sposób obsługi strony, której nie chcesz pokazywać wszystkim, ale nie chcesz zdradzać niczego, dlaczego nie chcesz jej pokazywać w określonych sytuacjach.
Oczywiście zakłada to, że klient składający wniosek troszczy się o drobną awanturę w RFC. Wystarczająco złośliwy klient nie będzie dbał o zwrócony kod stanu, chyba że w sposób przypadkowy. Można wiedzieć, że jest to ukryta strona użytkownika (lub potencjalnie ukryta strona użytkownika), porównując ją z innymi znanymi stronami użytkowników.
Powiedzmy, że twój przewodnik jest users/*
. Jeśli wiem users/foo
, users/bar
i users/baaz
praca, serwer przekazujących 401
, 403
lub 404
na users/quux
nie znaczy, że nie zamierzam spróbować, szczególnie jeśli mam powody, by sądzić, że jestquux
użytkownika. Standardowym przykładem jest Facebook: mój profil jest prywatny, ale moje komentarze do profili publicznych nie są. Złośliwy klient wie, że istnieję, nawet jeśli wrócisz 404
na stronę mojego profilu.
Dlatego kody statusu nie są przeznaczone dla przypadków złośliwego użycia, lecz dla klientów grających zgodnie z regułami. A dla tych klientów najbardziej odpowiednia jest prośba 401
lub 404
żądanie.