English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Il formato dei messaggi di richiesta HTTP e di risposta HTTP è simile, la struttura è la seguente:
Riga di stato iniziale + carattere di ritorno a capo (ritorno+invio)
Zero o più righe di intestazione + carattere di ritorno a capo
Una riga vuota, ossia il carattere di ritorno a capo
Un messaggio opzionale del corpo, come file, dati di ricerca o output di ricerca
Ad esempio, l'intestazione di risposta del server è come segue:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Riga vuota) <!doctype ...> <html> <head>...</head> <body> ... </body> </html>
La riga di stato include la versione HTTP (nel presente esempio HTTP/1.1), un codice di stato (nel presente esempio 200) e un messaggio breve corrispondente al codice di stato (nel presente esempio OK).
Di seguito è riportata una lista di codici di stato HTTP possibili che possono essere restituiti dal server web e delle informazioni correlate:
Codice | Messaggio | Descrizione |
---|---|---|
100 | Continua | Solamente una parte della richiesta è stata ricevuta dal server, ma se non è stata rifiutata, il client deve continuare la richiesta. |
101 | Passaggio dei protocolli | Il server sta passando a un nuovo protocollo. |
200 | OK | La richiesta è stata eseguita con successo. |
201 | Creato | La richiesta è completa e crea una nuova risorsa. |
202 | Accettato | La richiesta è stata accettata e elaborata, ma l'elaborazione non è completa. |
203 | Informazioni non autentiche | |
204 | Nessun contenuto | |
205 | Ripristina contenuto | |
206 | Contenuto parziale | |
300 | Molte scelte | Elenco di link. L'utente può selezionare un link per accedere a tale posizione. Massimo cinque indirizzi. |
301 | Spostato permanentemente | La pagina richiesta è stata trasferita a un nuovo URL. |
302 | Found | La pagina richiesta è stata temporaneamente spostata a un nuovo URL. |
302 | Trovato | Vedi altro |
La pagina richiesta può essere trovata in un altro URL diverso. | 304 | |
Non modificato | Usa il proxy | |
306 | Non utilizzato | Utilizza questo codice nella versione precedente. Ora non è più utilizzato, ma il codice è stato conservato. |
307 | Redirezione temporanea | La pagina richiesta è stata temporaneamente spostata a un nuovo URL. |
400 | Richiesta non valida | Il server non comprende la richiesta. |
401 | Non autorizzato | La pagina richiesta richiede nome utente e password. |
402 | Richiesto pagamento | Non puoi utilizzare questo codice ancora. |
403 | Vietato | Accesso alla pagina richiesta vietato. |
404 | Non trovato | Il server non può trovare la pagina richiesta. |
405 | Metodo non permesso | Il metodo specificato nella richiesta non è permesso. |
406 | Non accettabile | Il server genera solo una risposta non accettabile per il client. |
407 | Richiesta di autenticazione del proxy | Prima di inviare la richiesta, devi utilizzare l'autenticazione del server proxy. |
408 | Timeout della richiesta | La richiesta richiede più tempo di quanto il server possa aspettare, timeout. |
409 | Conflitto | La richiesta non può essere completata a causa di conflitti. |
410 | Scomparso | La pagina richiesta non è più disponibile. |
411 | Richiesto il numero di byte | Non definito "Content-Length". Il server non può elaborare le informazioni di richiesta del client che non contengono "Content-Length". |
412 | Condizioni preventive non soddisfatte | Le condizioni preventive indicate nella richiesta sono state valutate come false dal server. |
413 | Entità della richiesta troppo grande | Il server non accetta la richiesta perché l'entità della richiesta è troppo grande. |
414 | URL della richiesta troppo lungo | Il server non accetta la richiesta perché l'URL è troppo lungo. Si verifica quando si trasforma una richiesta "post" in una richiesta "get" con informazioni di ricerca lunghe. |
415 | Tipo di media non supportato | Il server non accetta la richiesta perché il tipo di media non è supportato. |
417 | Fallimento delle aspettative | |
500 | Errore interno del server | Richiesta non completata. Il server ha incontrato una situazione imprevista. |
501 | Not Implemented | 未完成的请求。服务器不支持所需的功能。 |
502 | Bad Gateway | 未完成的请求。服务器从上游服务器收到无效响应。 |
503 | Service Unavailable | 未完成的请求。服务器暂时超载或死机。 |
504 | Gateway Timeout | 网关超时。 |
505 | HTTP Version Not Supported | 服务器不支持"HTTP协议"版本。 |
下面的方法可用于在 Servlet 程序中设置 HTTP 状态码。这些方法通过 HttpServletResponse 对象可用。
序号 | 方法 & 描述 |
---|---|
1 | public void setStatus ( int statusCode ) 该方法设置一个任意的状态码。setStatus 方法接受一个 int(状态码)作为参数。如果您的响应包含了一个特殊的状态码和文档,请确保在使用 PrintWriter 实际返回任何内容之前调用 setStatus。 |
2 | public void sendRedirect(String url) 该方法生成一个 302 响应,并连同带有新文档 URL 的 Location 头。 |
3 | public void sendError(int code, String message) 该方法发送一个状态码(通常为 404),并连同一条在 HTML 文档内部自动格式化并发送到客户端的短消息。 |
下面的实例将 407 错误代码发送到客户端浏览器,浏览器会显示 "需要身份验证!!!" 消息。
// 导入必需的 java 库 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import javax.servlet.annotation.WebServlet; @WebServlet("/showError") // 扩展 HttpServlet 类 public class showError extends HttpServlet { // 处理 GET 方法请求的方法 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置错误代码和原因 response.sendError(407, "Need authentication!!!" ); } // 处理 POST 方法请求的方法 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
Now, calling the above Servlet will display the following result:
HTTP Status 407 - Need authentication!!!type Status report message Need authentication!!! description The client must first authenticate itself with the proxy (Need authentication!!!). Apache Tomcat/5.5.29 |