English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Quando o navegador solicita uma página da web, ele envia informações específicas para o servidor da Web, essas informações não podem ser lidas diretamente porque são transmitidas como parte da cabeça da solicitação HTTP. Você pode ver Protocolo HTTP Saiba mais informações.
A seguir estão algumas cabeçalhas importantes provenientes do lado do navegador, que você pode usar frequentemente em programação Web:
Cabeçalha | Descrição |
---|---|
Aceitar | Esta cabeçalha especifica o tipo de MIME que o navegador ou outro cliente pode manipular. Valor image/png ou image/jpeg São os dois valores mais comuns. |
Aceitar-Conjunto de caracteres | Esta cabeçalha especifica o conjunto de caracteres que o navegador pode usar para exibir informações. Por exemplo, ISO-8859-1. |
Aceitar-Codificação | Esta cabeçalha especifica o tipo de codificação que o navegador sabe como manipular. Valor gzip ou compress São os dois valores mais comuns. |
Aceitar-Idioma | Esta cabeçalha especifica o idioma preferido do cliente, neste caso, o Servlet gerará resultados em múltiplos idiomas. Por exemplo, en, en-us, ru e outros. |
Autorização | Esta cabeçalha é usada pelo cliente para identificar sua identidade ao acessar uma página da web protegida por senha. |
Conexão | Esta cabeçalha indica se o cliente pode manipular a conexão HTTP persistente. A conexão persistente permite que o cliente ou outro navegador recupere vários arquivos através de uma única solicitação. Valor Manter-Alive significa que foi usado uma conexão persistente. |
Content-Length | Essa informação de cabeçalho só se aplica a solicitações POST e informa o tamanho dos dados POST (em bytes). |
Cookie | Essa informação de cabeçalho retorna os cookies anteriormente enviados ao navegador para o servidor. |
Host | Essa informação de cabeçalho especifica o host e o porta do URL original. |
If-Modified-Since | Essa informação de cabeçalho especifica que o cliente deseja a página que estava disponível no URL original na data especificada. Se não houver novos resultados disponíveis, o servidor enviará um 304 código, representando Not Modified cabeçalho. |
If-Unmodified-Since | Essa informação de cabeçalho é If-Modified-O oposto de Since, ele especifica que a operação só será bem-sucedida se o documento for anterior à data especificada. |
Referer | essa informação de cabeçalho indica o URL da Web page para a qual está apontando. Por exemplo, se você estiver na página 1ao 2quando o navegador solicitar a página 2 ao 1 do URL estará incluído na cabeçalho Referer. |
User-Agent | Essa informação de cabeçalho identifica o navegador ou outro cliente que está fazendo a solicitação e pode retornar diferentes conteúdos para diferentes tipos de navegadores. |
Os seguintes métodos estão disponíveis no Servlet para ler cabeçalhos HTTP. Eles são acessados por HttpServletRequest Objeto Disponível
Número de Ordem | Método & Descrição |
---|---|
1 | getCookies() Retorna um array contendo todos os Cookie objects enviados pelo cliente para esta solicitação. |
2 | getAttributeNames() Retorna um enumeração contendo os nomes dos atributos disponíveis para a solicitação. |
3 | getHeaderNames() Retorna um enumeração contendo todos os nomes de cabeçalho contidos na solicitação. |
4 | getParameterNames() Retorna um enumeração de String, contendo os nomes dos parâmetros contidos na solicitação. |
5 | getSession() Retorna a HttpSession associada à solicitação atual ou cria uma se houver solicitação sem sessão. |
6 | getSession(boolean create) Retorna a HttpSession associada à solicitação atual ou, se não houver sessão atual e criar for verdadeiro, retorna uma nova sessão de session. |
7 | getLocale() Baseado em Accept-Cabeçalho de idioma, retorna o conjunto de preferências de regionalização preferido do cliente para aceitar conteúdo. |
8 | Object getAttribute(String name) Retorna o valor da propriedade nomeada em forma de objeto, ou null se não existir a propriedade com o nome fornecido. |
9 | ServletInputStream getInputStream() Usa ServletInputStream para recuperar o corpo da solicitação em forma de dados binários. |
10 | String getAuthType() Retorna o nome do esquema de autenticação usado para proteger o Servlet, por exemplo, "BASIC" ou "SSL", ou null se o JSP não estiver protegido. |
11 | String getCharacterEncoding() Retorna o nome da codificação de caracteres usada no corpo da solicitação. |
12 | String getContentType() Retorna o tipo MIME do corpo da solicitação, ou null se o tipo não for conhecido. |
13 | String getContextPath() Retorna a parte do URI da solicitação que indica o contexto da solicitação. |
14 | String getHeader(String name) Retorna a string do valor do cabeçalho da solicitação especificado. |
15 | String getMethod() Retorna o nome do método HTTP da solicitação, por exemplo, GET, POST ou PUT. |
16 | String getParameter(String name) Retorna o valor do parâmetro da solicitação em forma de string, ou null se o parâmetro não existir. |
17 | String getPathInfo() Retorna qualquer informação adicional de caminho relacionada ao URL enviado pelo cliente quando a solicitação foi emitida. |
18 | String getProtocol() Retorna o nome e a versão do protocolo da solicitação. |
19 | String getQueryString() Retorna a string de consulta contida na URL do pedido após o caminho. |
20 | String getRemoteAddr() Retorna o endereço IP (IP) do cliente que enviou a solicitação. |
21 | String getRemoteHost() Retorna o nome completo do cliente que enviou a solicitação. |
22 | String getRemoteUser() Retorna o usuário que fez a solicitação, se o usuário já foi autenticado, ou null se o usuário não foi autenticado. |
23 | String getRequestURI() Parte da URL do pedido que é retornada no query string da primeira linha da solicitação HTTP até o nome do protocolo. |
24 | String getRequestedSessionId() 返回由客户端指定的 session 会话 ID。 |
25 | String getServletPath() 返回调用 JSP 的请求的 URL 的一部分。 |
26 | String[] getParameterValues(String name) 返回一个字符串对象的数组,包含所有给定的请求参数的值,如果参数不存在则返回 null。 |
27 | boolean isSecure() 返回一个布尔值,指示请求是否使用安全通道,如 HTTPS。 |
28 | int getContentLength() 以字节为单位返回请求主体的长度,并提供输入流,或者如果长度未知则返回 -1. |
29 | int getIntHeader(String name) 返回指定的请求头的值为一个 int 值。 |
30 | int getServerPort() 返回接收到这个请求的端口号。 |
31 | int getParameterMap() 将参数封装成 Map 类型。 |
下面的示例使用 HttpServletRequest 的 getHeaderNames() 方法读取 HTTP 头信息。该方法返回一个枚举,包含与当前的 HTTP 请求相关的头信息。
一旦我们有一个枚举,我们可以以标准方式循环枚举,使用 hasMoreElements() 方法来确定何时停止,使用 nextElement() 方法来获取每个参数的名称。
//导入必需的 java 库 import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("}}/DisplayHeader") //扩展 HttpServlet 类 public class DisplayHeader extends HttpServlet { // 处理 GET 方法请求的方法 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "HTTP Header 请求示例 - 基础教程网示例"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><meta charset=\"utf-8\"><title>" + title + "</title></head>\n"+ "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" + "<table width=\"100%\" border=\"1\" align=\"center\">\n" + "<tr bgcolor=\"#949494\">\n" + "<th>Header 名称</th><th>Header 值</th>\n"+ "</tr>\n"); Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String paramName = (String)headerNames.nextElement(); out.print("<tr><td>" + paramName + "</td>\n"); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>\n"); } out.println("</table>\n</body></html>"); } // Método para lidar com solicitações de método POST public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
Este exemplo de teste é localizado no projeto TomcatTest, a configuração correspondente web.xml é:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet <!-- nome da classe --> <servlet-nome>DisplayHeader</servlet-nome> <!-- o pacote em que está --> <servlet-classe>com.w3codebox.test.DisplayHeader</servlet-classe> </servlet> <servlet-mapeamento> <servlet-nome>DisplayHeader</servlet-nome> <!-- endereço de acesso --> <url-padrão>/TomcatTest/DisplayHeader</url-padrão> </servlet-mapeamento> </web-app>
Agora, chame o Servlet acima, acesse http://localhost:8080/TomcatTest/DisplayHeader Produzirá o seguinte resultado: