English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ブラウザがウェブページをリクエストする際、Webサーバーに特定の情報を送信しますが、これらの情報は直接読み取れないため、HTTPリクエストのヘッダー部分として伝送されます。ご覧ください HTTPプロトコル もっと詳しい情報を知りたい場合は。
以下は、ブラウザ端から得られた重要なヘッダー情報で、Webプログラミングで頻繁に使用されます:
ヘッダー情報 | 説明 |
---|---|
Accept | このヘッダー情報は、ブラウザや他のクライアントが処理できるMIMEタイプを指定します。 image/png または image/jpeg 最も一般的な2つの値です。 |
Accept-Charset | このヘッダー情報は、ブラウザが情報を表示するための文字セットを指定します。例えば、ISO-8859-1。 |
Accept-Encoding | このヘッダー情報は、ブラウザがどのように処理するかを知っているエンコーディング形式を指定します。 gzip または compress 最も一般的な2つの値です。 |
Accept-Language | このヘッダー情報は、クライアントが希望する言語を指定し、この場合、サーバーが複数の言語の結果を生成します。例えば、en、en-us、ruなど。 |
Authorization | このヘッダー情報は、クライアントがパスワード保護されたウェブページにアクセスする際に自分の身元を確認するために使用されます。 |
Connection | このヘッダー情報は、クライアントが持続可能なHTTP接続を処理できるかどうかを示します。持続可能な接続は、クライアントや他のブラウザが1つのリクエストで複数のファイルを取得できるようにします。 Keep-Alive が意味し、持続接続を使用しています。 |
Content-Length | このヘッダー情報はPOSTリクエストにのみ適用され、POSTデータのサイズ(バイト単位)を示します。 |
Cookie | このヘッダー情報は、ブラウザに送信された前にサーバーに戻されたcookiesを返します。 |
Host | このヘッダー情報は、オリジナルのURLのホストとポートを指定します。 |
If-Modified-Since | このヘッダー情報は、指定された日付以降にページが変更された場合に、クライアントが望むページを表示するように指定します。新しい結果が使用できない場合、サーバーは 304 コードで、 Not Modified ヘッダー情報。 |
If-Unmodified-Since | このヘッダー情報はIf-Modified-Sinceの対立項で、指定された日付より以前のドキュメントのみが操作に成功するように指定します。 |
Referer | このヘッダー情報は、指名されたWebページのURLを示します。例えば、あなたが以下のページにいる場合 1、ページにリンクされたリンクをクリックする場合 2、ブラウザがページを要求する場合 2 参照元 1 のURLは、Refererヘッダー情報に含まれます。 |
User-Agent | このヘッダー情報は、リクエストを送信したブラウザや他のクライアントを識別し、異なるタイプのブラウザに異なる内容を返すことができます。 |
以下の方法は、ServletプログラムでHTTPヘッダを読み取るために使用されます。これらの方法は、 HttpServletRequest オブジェクトが利用可能。
序号 | 方法 & 説明 |
---|---|
1 | Cookie[] getCookies() クライアントがこのリクエストを送信したときに含まれるすべてのCookieオブジェクトを含む配列を返します。 |
2 | Enumeration getAttributeNames() 現在のリクエストに利用可能な属性名を含む列挙を返します。 |
3 | Enumeration getHeaderNames() 現在のリクエストに含まれるすべてのヘッダー名を含む列挙を返します。 |
4 | Enumeration getParameterNames() 現在のリクエストに含まれるパラメータ名を含むStringオブジェクトの列挙を返します。 |
5 | HttpSession getSession() 現在のsessionセッションを返します。もしくは、セッションがない場合に新しいセッションを作成します。 |
6 | HttpSession getSession(boolean create) 現在のHttpSessionを返します。もしくは、現在のセッションがない場合で、createがtrueの場合は新しいsessionセッションを返します。 |
7 | Locale getLocale() Acceptに基づいて-Languageヘッダー、クライアントがコンテンツを受け入れる際の首選の地域設定を返します。 |
8 | Object getAttribute(String name) 指定された名前の属性の値をオブジェクト形式で返します。指定された名前の属性が存在しない場合、nullを返します。 |
9 | ServletInputStream getInputStream() ServletInputStreamを使用して、リクエストのボディをバイナリデータ形式で取得します。 |
10 | String getAuthType() Servletを保護する認証方法の名前(例: |
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() プロトコル名からHTTPリクエストの最初の行のクエリ文字列まで、そのリクエストのURLの一部を返します。 |
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(); <tr><td> + + "</td>\n String paramValue = request.getHeader(paramName); <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 以下の結果が生成されます: