ホームページ  >  記事  >  ウェブフロントエンド  >  RESTful http の詳細な紹介

RESTful http の詳細な紹介

零下一度
零下一度オリジナル
2017-07-24 14:20:271678ブラウズ
HTTP (HyperText Transfer Protocol) は、コンピューターがネットワーク経由で通信するための一連のルールです。コンピュータの専門家は、HTTP クライアント (Web ブラウザなど) が HTTP サーバー (Web サーバー) に情報やサービスを要求できるようにするために HTTP を設計しました。HTTP プロトコルの現在のバージョンは 1.1 であり、ステートレスとは Web を指します。ブラウザと Web サーバーの間に永続的な接続を確立する必要はありません。これは、クライアントがサーバーにリクエストを送信し、Web サーバーが応答を返すと、接続が閉じられ、接続に関する情報がサーバー上に保持されないことを意味します。 Information.HTTP はリクエスト/レスポンス モデルに従います。 Web ブラウザは Web サーバーにリクエストを送信し、Web サーバーはリクエストを処理して適切な応答を返します。すべての HTTP 接続は、リクエストと応答のセットとして構造化されています。
HTTP はコンテンツ タイプを使用します。これは、Web サーバーから Web ブラウザに返されるファイルには関連するタイプがあることを意味します。これらのタイプはすべて、MIME インターネット メール プロトコルに基づいてモデル化されています。つまり、Web サーバーは、ファイルが HTML ドキュメント、GIF 画像、サウンド ファイル、またはスタンドアロン アプリケーションであるかどうか、ファイルの種類を Web ブラウザに伝えます。 。ほとんどの Web ブラウザには、Web サーバーから送信されたさまざまなコンテンツ タイプを処理する方法をブラウザに指示する、一連の構成可能なヘルパー アプリケーションがあります。
HTTP 通信メカニズムでは、完全な HTTP 通信プロセス中に、Web ブラウザと Web サーバーの間で次の 7 つのステップが完了します:
(1) TCP 接続を確立します
HTTP 作業が開始される前に、Web ブラウザはまず、ネットワークを介して Web サーバーとの接続を確立するには、TCP を介して接続が完了します。このプロトコルと IP プロトコルは、有名な TCP/IP プロトコル ファミリであるインターネットを共同で構築するため、インターネットは TCP/IP ネットワークとも呼ばれます。 。 HTTP は TCP よりも上位のアプリケーション層プロトコルであり、規則に従って、下位層のプロトコルが確立されて初めて上位層のプロトコルに接続できるようになります。そのため、通常は最初に TCP 接続を確立する必要があります。 TCP接続の数は80です
(2) WebブラウザはWebサーバーにリクエストコマンドを送信します
TCP接続が確立されると、WebブラウザはWebサーバーにリクエストコマンドを送信します
例: GET /sample/hello.jsp HTTP/1.1
(3) Web ブラウジング ブラウザはリクエストヘッダ情報を送信します
ブラウザはリクエストコマンドを送信した後、その他の情報もヘッダ情報の形で Web サーバーに送信します。その後、ブラウザはヘッダ情報の送信が終了したことをサーバに通知するために空行を送信します。
(4) Web サーバーの応答
クライアントがサーバーにリクエストを送信した後、サーバーはクライアントに応答を返します。
HTTP/1.1 200 OK
応答の最初の部分はプロトコルのバージョンです。番号と応答ステータス コード
( 5) Web サーバーは応答ヘッダー情報を送信します
クライアントがリクエストとともに自分自身に関する情報を送信するのと同じように、サーバーも自分自身と要求されたドキュメントに関するデータを、応答。
(6) Webサーバーはブラウザにデータを送信します
Webサーバーはブラウザにヘッダー情報を送信した後、ヘッダー情報の送信がここで終了であることを示す空行を送信し、応答します。 Content-Type ユーザーが要求した実際のデータはヘッダー情報で記述された形式で送信されます
(7) WebサーバーはTCP接続を閉じます
通常、Webサーバーはリクエストデータをブラウザに送信すると、 TCP 接続を閉じてから、ブラウザがこのコード行をヘッダー情報に追加した場合、
Connection:keep-alive
TCP 接続は送信後も開いたままになるため、ブラウザはリクエストを送信し続けることができます。同じ接続です。接続を維持すると、リクエストごとに新しい接続を確立するのに必要な時間が節約され、ネットワーク帯域幅も節約されます。
HTTP リクエストの形式
ブラウザが Web サーバーにリクエストを行うとき、リクエスト情報であるデータ ブロックをサーバーに渡します。 HTTP リクエスト情報は 3 つの部分で構成されます:
l リクエスト メソッド URI。プロトコル/バージョン
l リクエスト ヘッダー
l リクエスト テキスト
以下は HTTP リクエストの例です:
GET/sample.jspHTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(互換;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate
username=jinqiao&password=1234
(1) リクエストメソッド URI プロトコル/バージョン
リクエストの最初の行は「メソッド URL 提案/バージョン」: GET/sample.jsp HTTP/1.1
In上記のコード「GET」はリクエストメソッドを表し、「/sample.jsp」はURIを表し、「HTTP/1.1」はプロトコルとプロトコルバージョンを表します。
HTTP 標準に従って、HTTP リクエストは複数のリクエスト メソッドを使用できます。例: HTTP1.1 は、GET、POST、HEAD、OPTIONS、PUT、DELETE、および TARCE の 7 つのリクエスト メソッドをサポートします。インターネット アプリケーションで最も一般的に使用されるメソッドは GET と POST です。
URL はアクセスするネットワーク リソースを完全に指定します。通常はサーバーのルート ディレクトリへの相対ディレクトリを指定するだけなので、常に「/」で始まり、最後にプロトコル バージョンが通信中に HTTP の使用を宣言します。プロセスのバージョン。
(2) リクエストヘッダー
リクエストヘッダーには、クライアント環境とリクエスト本文に関する多くの有用な情報が含まれています。たとえば、リクエスト ヘッダーでは、ブラウザで使用される言語、リクエスト本文の長さなどを宣言できます。
Accept:image/gif.image/jpeg.*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(互換性:MSIE5. 01: Windows NT5.0)
Accept-Encoding:gzip,deflate.
(3) リクエストボディ
リクエストヘッダーとリクエストボディの間に空行があり、この行は非常に重要であることを示します。リクエストヘッダーが終わりました。次はリクエストボディです。リクエスト本文には、顧客が送信したクエリ文字列情報を含めることができます:
username=jinqiao&password=1234
上記の HTTP リクエストの例では、リクエスト本文の内容は 1 行のみです。もちろん、実際のアプリケーションでは、HTTP リクエストの本文にさらに多くのコンテンツを含めることができます。
HTTP リクエスト メソッド ここでは GET メソッドと POST メソッドについてのみ説明します
l GET メソッド
GET メソッドは、通常、フォーム データを送信するために GET メソッドを使用します。 GET メソッドは単純なエンコードを行わないと、URL の一部として Web サーバーに送信されるため、GET メソッドを使用してフォーム データを送信すると、セキュリティ上のリスクが発生します。たとえば、
Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
上記の URL リクエストから、フォームによって送信されたコンテンツを簡単に識別できます。 (その後はどうなりますか?) さらに、GET メソッドによって送信されるデータは URL リクエストの一部であるため、送信されるフォーム データ、特に大量のデータの量が大きすぎることはできません。 POST メソッドは、GET メソッドの欠点の一部を克服します。 POST メソッドでフォーム データを送信する場合、データは URL リクエストの一部として Web サーバーに送信されるのではなく、標準データとして送信されます。これにより、情報の機密性が保たれず、データ量が膨大になるという GET メソッドの欠点が克服されます。小さすぎる。したがって、セキュリティ上の理由とユーザーのプライバシーの尊重のため、通常はフォームを送信するときに POST メソッドが使用されます。
プログラミングの観点から見ると、ユーザーが GET メソッドでデータを送信した場合、データは QUERY_STRING 環境変数に保存されますが、POST メソッドで送信されたデータは標準入力ストリームから取得できます。
HTTP レスポンスは HTTP リクエストと似ており、HTTP レスポンスも次の 3 つの部分で構成されます:
l プロトコル ステータス バージョン コードの説明
l レスポンス ヘッダー (Response Header)
l レスポンスボディ
以下は HTTP です。応答の例:
HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112
 
<html><head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>协议状态代码描述HTTP响应的第一行类似于HTTP请求的第一行,它表示通信所用的协议是HTTP1.1服务器已经成功的处理了客户端发出的请求(200表示成功):
HTTP/1.1 200 OK响应头(Response Header)响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等:
   Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Content-Length:112
 响应正文响应正文就是服务器返回的HTML页面:
  <html><head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>
応答ヘッダーと本文も空行で区切る必要があります。
l HTTP 応答コード
HTTP 応答コードはステータス コードとも呼ばれ、HTTP リクエストを処理する Web サーバーのステータスを反映します。 HTTP 応答コードは 3 桁で構成されます。最初の桁は応答コードのタイプを定義します。
1XX - 情報タイプ (情報)、Web ブラウザー要求が受信され、さらに処理されていることを示します。 2XX - 成功タイプ ( Successful )、ユーザー要求が正しく受信、理解、処理されたことを示します。例: 200 OK
3XX-Redirection クラス (リダイレクト)。要求が成功しなかったため、顧客がさらなるアクションを実行する必要があることを示します。 4xx-クライアント エラー。クライアントのリクエストに次のようなエラーがあることを示します。 404 Not
Found。リクエストで参照されているドキュメントが存在しないことを意味します。
5XX-Server Error (サーバー エラー) は、サーバーがリクエストの処理を完了できないことを意味します: 500 など
私たち Web 開発者にとって、HTTP 応答コードをマスターすることは、Web アプリケーションのデバッグの効率と精度の向上に役立ちます。
安全な接続
Web アプリケーションの最も一般的な用途の 1 つは、Web サーバー側のプログラムを使用してオンライン ショッピングを可能にする電子商取引です。デフォルトでは、インターネット経由での情報の送信は安全ではないことを指摘する必要があります。あなたが友人にメ​​ッセージを送信すると、そのメッセージを開いてあなたのクレジット カード番号が含まれていると想像できるとしたら、それはどれほど悪いことでしょうか? 幸いなことに、多くの Web サーバーと Web ブラウザには安全な接続を確立する機能があるので、安全に通信できます。
インターネット上で安全な接続を提供するための最も一般的な標準は、セキュア ソケット レイヤ (SSl) プロトコルです。 SSL プロトコルは、Web 上で安全な方法でデータを交換するために使用されるアプリケーション層プロトコル (HTTP など) であり、公開キー エンコーディング システムを使用します。基本的に、これはビジネスの各関係者が公開キーと秘密キーを持っていることを意味します。一方が他方の公開鍵を使用して暗号化すると、一致する鍵を持っている人だけがそれを復号化できます。簡単に言うと、公開キー エンコーディングは、SSL 接続が確立された後、両方の当事者間でデータを交換するための安全な方法を提供し、両方のキーが検証されると、ビジネス上の連絡を行う前にそれらを検証します。データを安全に交換できます。
  • GET
    リクエストURIは、

  • POSTを通じてリソースを取得します。
    は、新しいコンテンツを追加するために使用されます

  • PUT
    は、特定のコンテンツを変更するために使用されます

  • 削除、
    削除コンテンツ

  • CONNECT、
    SSLを使用するなどのプロキシ転送に使用

  • オプション
    実行できるメソッドを尋ねる

  • PATCH、
    部分的なドキュメントの変更

  • PROPFIND、(wedav)
    属性の表示

  • Proppatch、(WEDAV)
    属性の設定

  • mkcol、(WEDAV)
    コレクション (フォルダー) の作成

  • Copy、(WEDAV)
    コピー

  • 移動、(wedav )
    Mobile

  • LOCK、(wedav)
    Lock

  • UNLOCK (wedav)
    Unlock

  • TRACE
    サーバーのリモート診断に使用されます

  • HEAD
    GETと同様、しかし戻りませんボディ情報、オブジェクトが存在するかどうかを確認し、オブジェクトのメタデータを取得するために使用されます

以上がRESTful http の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。