HTTPプロトコル
ディレクトリ
HTTPプロトコルのコンセプト
あるHTTPプロトコル、ハイパーテキスト転送プロトコル(ハイパーテキスト転送プロトコル)。ブラウザとWebサーバー間の相互通信のルールうち詳細なセットです。
HTTPプロトコル機能
1)クライアント/サーバー
2)簡単かつ迅速:サーバーへの顧客サービス要求は、単にリクエストメソッドとパスを移します。
3)柔軟性:HTTPプロトコルは、データオブジェクトの任意の型の伝送を可能に
4)接続なし:いいえ接続を意味しない処理を、接続ごとに1つだけの要求を制限することではありません。
5)ステートレス:HTTPプロトコルはステートレスなプロトコルです。ステートレスは、思い出のないトランザクション処理するための手段。状態の欠如がその後の処理は、情報の前に必要なことを意味している場合、それは再送信する必要があります。一方、ときにサーバーは、比較的迅速に応答して、以前の情報を必要としません。
HTTPプロトコルの分類
HTTP要求プロトコル:ブラウザがプロトコルに従うことをサーバに要求を送信します
HTTPレスポンスプロトコル:サーバーは、プロトコルに従うために、ブラウザへの応答を開始します。
HTTPリクエスト
リクエストライン
1)型:モード要求リソースパスプロトコルバージョン番号
2)GET / index.phpをHTTP / 1.1
HTTP 1.0プロトコルを介して、最初の時間は、排他的な行線(第1行)を要求しました
リクエストヘッダ
リクエストヘッダは、契約の内容で、契約の具体的な内容は、常にすべて使用することはありません
1)ホスト:ホストアドレス要求(予定)
2)を受け入れ:サーバによって返された現在の要求タイプ(MIMEタイプを受け入れることができます)
3)のAccept-言語:言語は、受け取りました
4)のUser-Agent:クライアントブラウザのコンピュータに関する情報
リクエストヘッダが固定されておらず、各要求プロトコルは、独自のラインであり、最終的に(要求ヘッダと要求体を区別するために使用される)空行があります
リクエストボディ
データ要求:POSTリクエストは、リクエストボディを持つことになります。すべてのデータとの要求をGETパスがURLの後にリソース要求ラインに反映されます、です。
基本フォーマット:名=リソースリソースリソース名=値&リソース値...
HTTPレスポンス
応答ライン
1)形式で:ステータスコード状態情報のプロトコルバージョン番号
2)200 OK:成功
禁断3)403:アクセスなし
4)404が見つかりません:ページが見つかりません
5)500サーバーインターバルエラー:内部サーバーエラー
レスポンスヘッダ
具体的な合意
1)時間:水曜日2018年9月16日11時43分33秒GMT
2)サーバーのサーバー:Apacheの/ 2.4(win64の)PHP / 7
3)コンテンツ長の長さ:1571、特定のバイト数のデータ(レスポンスボディ)
4)コンテンツタイプConetent-Typeは:データ形式にブラウザに指示
それはすべて、いくつかの一般的な応答ヘッダーを引用しない:行あたりレスポンスヘッダ、最後の空白行を(レスポンスヘッダとレスポンスボディを区別するために)
レスポンスボディ
ブラウザへの実際のサーバ応答内容
一般的なHTTPステータスコード
ステータスコード200:成功
ステータスコード403:禁じられ、アクセス(無許可)を拒否する
ステータスコード404:見つからない、ページが見つかりません。
ステータスコード500:サーバーの問題
HTTPメッセージ内の以下のW3C HTML、ステータスコードを表示
1XX:情報2XX:成功3XX:リダイレクト4XX:クライアントエラー5XX:サーバーエラー
HTTPレスポンス
一般的なHTTPレスポンスの設定と使用
PHPは、HTTPプロトコル(応答)の基礎となる設計を行うには、関数ヘッダがHTTPレスポンス(応答ヘッダ)を変更するために実施されてもよいです
注意事項:
線に応答して、ヘッド(空行の終わり)、レスポンスボディに応答して:HTTPプロトコルをすることを特徴とするので1、ヘッダHTTPレスポンスは、設計されてもよいです。ヘッダーのデザインにより時間応答ヘッダを考えて、任意のコンテンツの出力を持つべきではありませんので、一度(それはスペースであっても)、コンテンツの出力を生成し、システムが応答ヘッダを考慮することが戻ります終了し、レスポンスボディが始まったので、最初の出力内容場合の応答を設定していますヘッダー(ヘッダーを使用)、セット理論は有効ではありません。
内容で、コンテンツの出力にサーバースクリプトを許可した後、直接ブラウザに戻りませんが、現在はサーバー側のキャッシュプログラムの保持(php.iniの使用にoutput_buffering)の使用:2、PHP5の後、プログラム・キャッシュ・コンテンツの増加そして、自動的に第一反応体に応じて調整(コンテンツの後に再び可能に応答ヘッド出力が提供されている)が、この時間は、キャッシュ内のエラー(警告)であろう。
要約:ヘッダの設定はレスポンスボディの前に任意の出力を持っていません。
所在地:リダイレクト、および(構文解析せずにレスポンスボディを)すぐにジャンプ
ブラウザサーバーが応答の解析時:最初に反応し続け、行に応じて第1の決意を、最後のレスポンスボディ:ブラウザが合意を見てたら、レスポンスヘッダ内の位置は、もはやダウン解決しないように。
Refersh:リダイレクトタイミングはジャンプ(体験応答解析)
遅延リダイレクトは:(レスポンスヘッダとレスポンスボディ)アクセスをジャンプする準備が整うまで、ブラウザは、HTTPプロトコルを解析していきます:ブラウザベースのアクセスで指定されたリンクのための特定の時間遅延の後にジャンプします
Conetent型:コンテンツの種類、MIMEタイプ
コンテンツ(MIMEタイプ)を通知することで、ブラウザが正しく内容を解析し
コンテンツ処分:コンテンツタイプ、MIMIEタイプの拡張子は、ブラウザのファイルダウンロードダイアログボックスをアクティブにします。
ブラウザがコンテンツを解析すると、デフォルトでは直接解決されます。ファイルの内容をダウンロードするように、時にはあなたは、解決する必要がありません
PHPは、HTTPリクエストをシミュレート
原則
PHPのHTTPリクエストは、HTTPプロトコルをシミュレートすることによって開始することができます
CURLはHTTP、FTP、Telnetを含む多くのプロトコルをサポートして非常に強力なオープンソースのライブラリであり、我々は、HTTPリクエストを送信するためにそれを使用します。それが私たちにもたらしたメリットは、あなたが柔軟なオプションを使用してHTTPプロトコルの異なるパラメータを設定し、HTTPSをサポートすることができるということです。URLプレフィックスに基づいて暗号化されたコンテンツを送信するかどうかを選択し、自動的に「HTTP」または「HTTPS」でカール
前提条件:HTTPプロトコルは、HTTPプロトコルは、ブラウザのアクセスに限定されるものではありません、クライアント/サーバモードです。
カール拡張ライブラリの使用
1、オープンCURL拡張
2、時には、でも拡張が開きますPHPのバージョンは、拡張可能性を使用することはできません:CURLは、関連するDLLファイルがCに配置する必要があり、対応するdllファイルが見つからないため、:\ WINDOWSを
3、Apacheのアプリケーションを再起動
curl_init():接続機能のCURLを活性化させる1)接続を確立するために、
2)设置请求选项:curl_setopt():设定选项
CURLOPT_URL:需要获取的 URL 地址,也可以在curl_init() 初始化会话的时候。
CURLOPT_RETURNTRANSFER:将服务器执行的结果(响应)以文件流的形式返回给请求界面(PHP脚本)
CURLOPT_POST :是否采用POST方式发起请求(默认请求是GET)
CURLOPT_POSTFIELDS:用来传递POST提交的数据。分为两种方式:字符串(name =abc&password=123)以及数组形式(array(‘name’=>’abc’,…))
CURLOPT_HEADER:是否得到相应的header信息(响应头),默认不获取。 启用时会将头文件的信息作为数据流输出。
3)执行请求:curl_exec():执行选项(与服务器发起请求),得到服务器返回的内容
如有乱码,加一个header('Content-type:text/html;charset=utf-8');
4)关闭连接:curl_close():关闭资源