Serwer nie zaryzykuje przetworzenia żądania, które mogło zostać powtórzone.
Kiedy go używać
Wczesne dane TLS (0-RTT).
Typowe przyczyny i rozwiązania
425 dotyczy early data w TLS 1.3, zwanych też 0-RTT: powracający klient może wysłać żądanie razem z pierwszym pakietem handshake'u, ale atakujący może te dane odtworzyć. Serwer lub CDN, który otrzyma w early data żądanie z efektami ubocznymi, może odpowiedzieć 425, a klient wyśle je ponownie po zakończeniu handshake'u. Proxy oznaczają takie żądania nagłówkiem Early-Data: 1.
Rzadko obsługujesz go sam, bo przeglądarki ponawiają żądanie automatycznie. Ma znaczenie, gdy włączysz 0-RTT, np. ssl_early_data on w nginx: przekaż flagę przez proxy_set_header Early-Data $ssl_early_data i niech aplikacja zwraca 425 dla żądań POST lub każdego GET, który zmienia stan. Jeśli nie możesz tego zagwarantować, zostaw 0-RTT wyłączone.
Błąd klienta (4xx)
Kody 4xx to błędy klienta: samo żądanie jest błędne, nieautoryzowane albo wskazuje na coś, czego nie ma. Ponowienie tego samego żądania nic nie da.
Jak to wygląda
HTTP/1.1 425 Too EarlyJak go wysłać
| Node.js / Express | res.status(425).end() |
|---|---|
| Python / Flask | return '', 425 |
| nginx | return 425; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/