モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

HTTP とは?簡単なまとめ

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2013/09/10
最終更新最終更新
2018/12/10
記事区分記事区分
一般公開

目次

    GitHub Actions とか CI/CD が好きです。

    0
    ステッカーを贈るとは?

    HTTP (Hypertext Transfer Protocol) はTCP/IPにおけるアプリケーション層プロトコルのひとつです。大まかにはリクエストとレスポンスの二種類によるやりとり方法を定めています。

    リクエスト

    代表的なリクエストメソッドはGETとPOSTですが、他にもPUTやDELETEなどがあります。いずれもリクエストラインが一行目にきて、空白区切りで「リクエストメソッド、リクエストURL、HTTPのバージョン」の三つを指定します。二行目からは": "で区切られたヘッダが続きます。リクエストメソッドによっては (POSTなど) 空行で終了したヘッダのあとにボディが続きます。

    GET

    具体例:

    GET /search?q=ruby HTTP/1.1
    Host: www.qoosky.io
    User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:23.0) Gecko/20100101 Firefox/23.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: ja,en-us;q=0.7,en;q=0.3
    Accept-Encoding: gzip, deflate
    Cookie: toolbarDisplay=hide
    Connection: keep-alive
      ←(空行)
    

    GETで必須となるヘッダはHostのみです。Hostヘッダにはホスト名 (FQDN) とポート番号 (80の場合は省略可能) が指定されます。なお、一行目のリクエストラインにはブラウザごとに決められた上限の長さがあります。

    POST

    「リクエストライン、ヘッダ、空行、メッセージボディ」からなります。

    例:

    POST /path/to/resource.php HTTP/1.1
    Referer: http://www.example.com/from.php?id=123
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 128
    Host: www.example.com
    
    name=hoge%27hoge&val=123
    

    Content-TypeはMIMEタイプとよばれるリソースの種類を指定するヘッダで、HTMLのformで指定可能です。省略するとapplication/x-www-form-urlencodedになります。これはGETリクエストのようにパーセントエンコードされたもので、特殊記号やマルチバイト文字は%xxを一つ以上用いて表現されます。ただし空白は特別に%20ではなく'+'となります。また、Content-Lengthはメッセージボディ部のサイズ (バイト数) です。

    最後に、RefererヘッダにはPOST元 (formがあったページ) のURLが記載されます。英語的に正しいReferrerではなく、つづりミスのRefererです。Refererヘッダには、他にもGETリクエスト時のリンクもと (aリンク (href) を踏んだページ) のURLが記載されます。このように、サーバ側のメリットとしてどこから来たのか把握できる一方で、クライアント側で容易に改変可能であるため絶対的には信用できない情報です。また、例えば悪意あるユーザが自分のサーバへのリンクをコメント欄に埋めこむと、それを踏んだユーザのURLがRefererでバレたりします。もしURLにセッションIDなどが含まれている場合は大変なことになりますね。

    レスポンス

    「ステータスライン、ヘッダ、空行、ボディ」からなります。一行目のステータスラインには空白区切りで「HTTPのバージョン、ステータスコード、テキストフレーズ」が記載されます。テキストフレーズはステータスコードの人間用の訳のようなものです。

    具体例:

    HTTP/1.1 302 Found
    Date: Mon, 09 Sep 2013 14:24:09 GMT
    Server: Apache/2.2.15 (CentOS)
    Location: https://www.qoosky.io/search?q=ruby
    Content-Length: 300
    Connection: close
    Content-Type: text/html; charset=iso-8859-1
    
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>302 Found</title>
    </head><body>
    <h1>Found</h1>
    <p>The document has moved <a href="https://www.qoosky.io/search?q=ruby">here</a>.</p>
    <hr>
    <address>Apache/2.2.15 (CentOS) Server at www.qoosky.io Port 80</address>
    </body></html>
    

    上記の例ではhttpでアクセスしてしまったユーザをhttpsにリダイレクトしています。ステータスコードについて簡単にまとめます:

    • 1xx: 処理が継続している
    • 2xx: 正常終了
    • 3xx: リダイレクト
    • 4xx: クライアントエラー (ファイルがない場合は404)
    • 5xx: サーバーエラー (内部サーバーエラーは500、nginx などがリバースプロキシとして動作して上位サーバからレスポンスを得られない場合は 502 Bad Gateway を nginx が返す)

    Content-Type (MIMEタイプでリソースの種類を指定) の例:

    • text/plain
    • text/html
    • text/css
    • application/xml
    • application/pdf
    • image/jpeg
    • image/png
    • image/gif
    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    GitHub Actions とか CI/CD が好きです。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事

      • Android における非同期 HTTP 通信
        Android で利用される HTTP クライアントには Volley や OkHttp がありますが、ここでは Android プラットフォームに標準で導入されている [HttpsURLConnection](https://developer.android.com/reference/javax/net/ssl/Https
        パンダパンダ12/19/2019に更新
        いいねアイコン画像0
      • Scala HTTP 通信
        ビルドツールの設定 Dispatch を利用します。 pom.xml (maven) <dependency> <groupId>net.databinder.dispatch</groupId> <artifactId>dispatch-core</artifactId> <version>0.11.2</...
        したくんしたくん10/7/2018に更新
        いいねアイコン画像0
      • Squid の簡単な設定例
        HTTP Proxy として利用される squid について、設定例を記載します。 localnet の定義 127.0.0.1 に対しては localhost および to_localhost という組み込みの名称のキーワードが利用できます。その他のプライベートIP に対するキーワードは独自に定義する必要があります。 acl localnet src 0.0.0.1-0.255.255.255 ...
        nanodevnanodev2/14/2024に更新
        いいねアイコン画像0
      • HTTP 経由でファイルシステムをマウント (WebDAV、davfs2)
        HTTP の拡張である WebDAV を利用すると、サーバ上のファイルシステムを HTTP で外部に公開できます。Debian9 を利用した設定例を記載します。HTTP サーバとしては Apache を利用します。 Apache の設定 必要なパッケージをインストールします。 sudo apt install apache2 公開するディレクトリを用意します。 sudo mkdir -p /dat...
        したくんしたくん12/14/2020に更新
        いいねアイコン画像0