Dodanie pewnych informacji jakiś czas później, ponieważ natknąłem się na to pytanie podczas badania czegoś związanego.
wierzę pole nagłówka status został wynaleziony jako część specyfikacji CGI, RFC 3875:
https://tools.ietf.org/html/rfc3875#section-6.3.3
Cytując:
The Status header field contains a 3-digit integer result code that
indicates the level of success of the script's attempt to handle the
request.
Status = "Status:" status-code SP reason-phrase NL
status-code = "200" | "302" | "400" | "501" | extension-code
extension-code = 3digit
reason-phrase = *TEXT
Pozwala skrypt CGI do zwróci kod statusu do serwera WWW, który zastępuje domyślny stan widoczny w linii statusu HTTP. Zazwyczaj serwer buforuje wynik ze skryptu i emituje nowy nagłówek dla klienta. Ten jest poprawnym nagłówkiem HTTP, który zaczyna się od poprawionego wiersza statusu HTTP i pomija pole nagłówka "Status:" skryptów (oraz kilka innych transformacji wymaganych przez RFC).
Wszystkie twoje przykłady są ważne od CGI skryptu, ale tylko pierwszy jest naprawdę poprawny w nagłówku HTTP. Te dwa ostatnie są ważne tylko ze skryptu CGI (lub może aplikacji FastCGI).
Skrypt CGI może również działać w trybie "nie przeanalizowanego nagłówka" (NPH), gdy generuje kompletny i prawidłowy nagłówek HTTP, który serwer WWW przekazuje dosłownie klientowi. Jako takie nie powinno to obejmować pola nagłówka Status:.
Uwaga, interesuje mnie, jaki status powinien wygrać, jeśli skrypt NPH trochę go zepsuje i wyśle pole Status: header, być może oprócz linii statusu HTTP. Nie mogę znaleźć żadnego wyraźnego wskazania, więc podejrzewam, że pozostało to do implementacji tego, co parsuje dane wyjściowe, zarówno klienta, jak i serwer.