Python-network-programming-python-http-headers
Python-HTTPヘッダー
クライアントとサーバー間のリクエストとレスポンスには、メッセージのヘッダーと本文が含まれます。 ヘッダーには、TCP接続を介して送信される生のメッセージの先頭に表示されるプロトコル固有の情報が含まれています。 メッセージの本文は、空白行を使用してヘッダーから分離されます。
ヘッダーの例
http応答のヘッダーは、次のタイプに分類できます。 以下は、ヘッダーの説明と例です。
キャッシュ制御
Cache-Control general-headerフィールドは、すべてのキャッシングシステムが従わなければならないディレクティブを指定するために使用されます。 構文は次のとおりです。
HTTPクライアントまたはサーバーは、 Cache-control 一般ヘッダーを使用して、キャッシュのパラメーターを指定したり、キャッシュから特定の種類のドキュメントを要求したりできます。 キャッシングディレクティブは、コンマ区切りリストで指定されます。 例えば:
接続
Connection general-headerフィールドを使用すると、送信者はその特定の接続に必要なオプションを指定でき、プロキシはそれ以上の接続で通信することはできません。 接続ヘッダーを使用するための簡単な構文は次のとおりです。
HTTP/1.1は、送信者が「完了」接続オプションを定義して、応答の完了後に接続が閉じられることを通知します。 例えば:
デフォルトでは、HTTP 1.1は永続的な接続を使用します。この場合、接続はトランザクション後に自動的に閉じられません。 一方、HTTP 1.0には、デフォルトでは永続的な接続がありません。 1.0クライアントが永続的な接続を使用する場合、次のように keep-alive パラメーターを使用します。
Date
すべてのHTTP日付/時刻スタンプは、例外なくグリニッジ標準時(GMT)で表されなければなりません。 HTTPアプリケーションは、日付/時刻スタンプの次の3つの表現のいずれかを使用できます。
転送エンコード
Transfer-Encoding general-headerフィールドは、送信者と受信者の間で安全に転送するために、メッセージ本文に適用された変換のタイプを示します。 transfer-encodingはエンティティ本体ではなくメッセージのプロパティであるため、これはcontent-encodingとは異なります。 Transfer-Encodingヘッダーフィールドの構文は次のとおりです。
すべての転送コーディング値は大文字と小文字を区別しません。
アップグレード
_Upgrade_ジェネラルヘッダーを使用すると、クライアントは、サポートする追加の通信プロトコルを指定し、サーバーがプロトコルの切り替えに適していると判断した場合に使用することを指定できます。 例えば:
Upgradeヘッダーフィールドは、HTTP/1.1から他の互換性のないプロトコルへの移行のためのシンプルなメカニズムを提供することを目的としています。
Via
Via general-headerは、中間プロトコルと受信者を示すためにゲートウェイとプロキシによって使用される必要があります。 たとえば、HTTP/1.0ユーザーエージェントから「fred」というコード名の内部プロキシにリクエストメッセージを送信できます。このプロキシは、HTTP/1.1を使用してnowhere.comのパブリックプロキシにリクエストを転送します。 www.ics.uci.eduのオリジンサーバーに転送します。 www.ics.uci.eduが受信したリクエストには、次のViaヘッダーフィールドが含まれます。
Upgradeヘッダーフィールドは、HTTP/1.1から他の互換性のないプロトコルへの移行のためのシンプルなメカニズムを提供することを目的としています。
警告
Warning general-headerは、メッセージに反映されない可能性のあるメッセージのステータスまたは変換に関する追加情報を伝えるために使用されます。 応答には、複数の警告ヘッダーが含まれる場合があります。
例
以下の例では、urllib2モジュールを使用して、urlopenを使用して応答を取得します。 次に、info()メソッドを適用して、その応答のヘッダー情報を取得します。
上記のプログラムを実行すると、次の出力が得られます-