English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Когда браузер запрашивает веб-страницу, он отправляет определенную информацию на веб-сервер, которая не может быть напрямую прочитана,因为这些 данные передаются в виде части заголовка HTTP-запроса. Вы можете проверить Протокол HTTP Узнать больше информации.
Вот важные заголовки, которые могут быть получены от браузера, и которые часто используются в веб-программировании:
Заголовки | Описание |
---|---|
Accept | Эта заголовочная информация specifies the MIME type that the browser or other client can handle. Значение image/png или image/jpeg Это наиболее распространенные два возможных значения. |
Accept-Charset | Эта заголовочная информация specifies the character set that the browser can use to display information. Например, ISO-8859-1. |
Accept-Encoding | Эта заголовочная информация specifies the encoding type that the browser knows how to handle. Значение gzip или compress Это наиболее распространенные два возможных значения. |
Accept-Language | Эта заголовочная информация specifies the preferred language of the client, in which case the servlet will produce results in multiple languages. Например, en, en-us, ru и т.д. |
Authorization | Эта заголовочная информация используется для того, чтобы клиент мог идентифицировать себя при доступе к веб-странице, защищенной паролем. |
Connection | Эта заголовочная информация indicates whether the client can handle a persistent HTTP connection. Persistent connections allow clients or other browsers to retrieve multiple files through a single request. Значение Keep-Alive Это означает, что используется продолжительный соединение. |
Content-Length | Эта заголовочная информация относится только к запросам POST и specifies the size of the POST data in bytes. |
Cookie | Эта заголовочная информация возвращает cookies, которые были отправлены браузеру, на сервер. |
Host | Эта заголовочная информация specifies the host and port in the original URL. |
If-Modified-Since | Эта заголовочная информация означает, что клиент хочет страницу, которая была изменена после указанной даты. Если нет новых результатов, которые можно использовать, сервер будет отправлять код 304, что означает Not Modified Заголовки |
If-Unmodified-Since | Эта заголовочная информация является противоположностью If-Modified-Since и specifies that the operation will only be successful if the document is earlier than the specified date. |
Referer | Эта заголовочная информация указывает на URL веб-страницы, к которой она относится. Например, если вы находитесь на странице 1 и нажимаете ссылку на страницу 2, когда браузер запрашивает страницу 2, URL страницы 1 будет включен в заголовок Referer. |
User-Agent | Этот заголовок информации identifies the browser or other client that issued the request and can return different content to different types of browsers. |
Ниже перечислены методы, доступные в Servlet-программе для чтения HTTP-заголовков. Эти методы через HttpServletRequest Объект доступен.
Номер | Метод & Описание |
---|---|
1 | Cookie[] getCookies() Возвращает массив, содержащий все Cookie-объекты, отправленные клиентом в этот запрос. |
2 | Enumeration getAttributeNames() Возвращает объект Enumeration, содержащий имена свойств, предоставленных для этого запроса. |
3 | Enumeration getHeaderNames() Возвращает объект Enumeration, содержащий все заголовки, включенные в этот запрос. |
4 | Enumeration getParameterNames() Возвращает объект Enumeration, содержащий имена параметров, включенных в этот запрос. |
5 | HttpSession getSession() Возвращает текущий session, связанный с этим запросом, или если запрос не имеет сессии, то создает новую. |
6 | HttpSession getSession(boolean create) Возвращает текущий HttpSession, связанный с этим запросом, или если текущей сессии нет и значение create равно true, то возвращает новую сессию. |
7 | Locale getLocale() На основе заголовка Accept-Language возвращает предпочтительный регион для клиента, который принимает содержимое. |
8 | Object getAttribute(String name) Возвращает значение свойства с именем, указанным в качестве аргумента, в виде объекта; если свойство с указанным именем не существует, то возвращает null. |
9 | ServletInputStream getInputStream() Используя ServletInputStream, retrieves the body of the request in binary data form. |
10 | String getAuthType() Возвращает имя алгоритма аутентификации, используемого для защиты Servlet, например, "BASIC" или "SSL", если JSP не защищена, то возвращает null. |
11 | String getCharacterEncoding() Возвращает имя кодировки символов, используемой в теле запроса. |
12 | String getContentType() Возвращает MIME тип тела запроса, если тип не известен,则在озвращает null. |
13 | String getContextPath() Возвращает часть запрос URI, указывающую контекст запроса. |
14 | String getHeader(String name) Возвращает значение указанного заголовка запроса в виде строки. |
15 | String getMethod() Возвращает имя HTTP метода запроса, например, GET, POST или PUT. |
16 | String getParameter(String name) Возвращает значение параметра запроса в виде строки или null, если параметр не существует. |
17 | String getPathInfo() Возвращает любое дополнительное путь информации, связанное с URL, отправленным клиентом, когда запрос был отправлен. |
18 | String getProtocol() Возвращает имя и версию протокола запроса. |
19 | String getQueryString() Возвращает строку запроса, содержащуюся в URL после пути. |
20 | String getRemoteAddr() Возвращает IP-адрес клиента, который отправил запрос. |
21 | String getRemoteHost() Возвращает полное ограниченное имя клиента, который отправил запрос. |
22 | String getRemoteUser() Возвращает имя пользователя, который отправил запрос, если пользователь уже прошел аутентификацию, или null, если пользователь не прошел аутентификацию. |
23 | String getRequestURI() Возвращает часть URL запроса от имени протокола до первой строки запроса HTTP. |
24 | String getRequestedSessionId() Возвращает сеансовый идентификатор, указанный клиентом. |
25 | String getServletPath() Возвращает часть URL запроса, которая является частью вызова JSP. |
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>Название заголовка</th><th>Значение заголовка</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>"); } // Обработка метода запроса POST public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
Этот тестовый пример находится в проекте TomcatTest, соответствующие настройки web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <!-- Имя класса --> <servlet-name>DisplayHeader</servlet-name> <!-- Расположение пакета --> <servlet-class>com.w3codebox.test.DisplayHeader</servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayHeader</servlet-name> <!-- Адрес посещения --> <url-pattern>/TomcatTest/DisplayHeader</url-pattern> </servlet-mapping> </web-app>
Теперь вызовите上面的 Servlet, чтобы访问 http://localhost:8080/TomcatTest/DisplayHeader Это会产生以下结果: