清原研修/2 http://www.ark-web.jp/sandbox/wiki/449.html
目次 †
HTTPヘッダやCGI環境変数を実際に見てみる †
| カテゴリー | HTTPヘッダやCGI環境変数を実際に見てみる |
| 優先順位 | 至急 |
| イテレーション | イテレーション1 |
| 状態 | 完了 |
| 完了予定日 | 2007/8/9 |
| 工数 | |
| 対応者 | 清原 |
要件 †
- formがあるページを用意する
- GETメソッド, POSTメソッドで送信してみる
- サーバーからのレスポンスは、"aaa"などでOK。
- サーバー側で、受け取るCGI変数を一通り確認してみる
- FirefoxのHTTPヘッダが見られる拡張(extention)である(Live HTTP headers)を
インストールして、ブラウザから送信されるHTTPヘッダ及び、サーバーから返されるHTTPヘッダの
内容を確認する - サーバーからのレスポンスとして次を返すように変更してみて、HTTPヘッダを確認してみる
- レスポンスヘッダ 302
- レスポンスヘッダ 401
- レスポンスヘッダ 404
- レスポンスヘッダ 500
- cookieを発行してみる
- 以上の結果をレポートする(メモする)
実験1 †
用意したページ
form.html
用意したサーバー側PHPプログラム
form.php
- POSTの場合
HTTPリクエストヘッダREQUEST POST /~kiyohara/form.php HTTP/1.1 …クライアントの要求 POSTは動作の結果を記述もしくは含んでいる Host okra.ark-web.jp …要求先のホスト名 User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 …クライアントの使用するブラウザ Accept text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 …クライアントのサポートするメディアタイプ Accept-Language ja,en-us;q=0.7,en;q=0.3 …クライアントが対応している言語 Accept-Encoding gzip,deflate …転送したボディ部で使用したエンコーディング方式の指定 Accept-Charset Shift_JIS,utf-8;q=0.7,*;q=0.7 …クライアントの対応する文字コード
HTTPレスポンスヘッダRESPONSE HTTP/1.1 200 OK …リクエストが成功した Date Thu, 09 Aug 2007 02:40:48 GMT Server Apache/2.2.2 (Fedora) …サーバが使用する製品名 X-Powered-by PHP/4.4.4 …PHPのバージョン Content-Length 152 …ボディ部のデータ長 Connection close …接続に関するオプション。closeなので終了している Content-Type text/html …メディアタイプ
- GETの場合
HTTPリクエストヘッダREQUEST GET /~kiyohara/form.php?c=c HTTP/1.1 GETはリクエストされたリソースに相当するエンティティがレスポンスとして送られた Host okra.ark-web.jp User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 Accept text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language ja,en-us;q=0.7,en;q=0.3 Accept-Encoding gzip,deflate Accept-Charset Shift_JIS,utf-8;q=0.7,*;q=0.7
HTTPレスポンスヘッダRESPONSE HTTP/1.1 200 OK Date Tue, 07 Aug 2007 04:32:19 GMT Server Apache/2.2.2 (Fedora) X-Powered-by PHP/4.4.4 Content-Length 151 Connection close Content-Type text/html
- GETとPOSTの違い
GET:URL末尾「?〜」以降にクエリ情報がセットされる。クエリ情報がブラウザのアドレス欄に露出するのでパスワードのような重要な情報のやり取りでは使用するべきでない
POST:HTMLフォームから入力された情報がリクエスト情報の本体として送信されるので特別なツールを用いない限り送信内容がユーザの目に触れる事はない。
- CGI環境変数
クライアントの使用するブラウザ:Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 クライアントの受付可能なメディアタイプ(優先順位):text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 クライアントが対応している言語(優先順位):ja,en-us;q=0.7,en;q=0.3 要求先のホスト名:okra.ark-web.jp
サーバ応答コード †
302
要求されたURLが一時的に移動されている
RESPONSE HTTP/1.1 302 Moved Temporarily Date Thu, 09 Aug 2007 02:26:37 GMT Server Apache/2.2.2 (Fedora) X-Powered-by PHP/4.4.4 Content-Length 0 Connection close Content-Type text/html
401
要求が適正な権限を持っていなかった事を示す
RESPONSE HTTP/1.1 401 Unauthorized Date Thu, 09 Aug 2007 02:23:14 GMT Server Apache/2.2.2 (Fedora) X-Powered-by PHP/4.4.4 Content-Length 0 Connection close Content-Type text/html
404
指定されたドキュメントが存在しない
RESPONSE HTTP/1.1 404 Not Found Date Tue, 07 Aug 2007 04:11:36 GMT Server Apache/2.2.2 (Fedora) X-Powered-by PHP/4.4.4 Content-Length 296 Connection close Content-Type text/html; charset=iso-8859-1
500
CGIなどの内部エラーが発生
RESPONSE HTTP/1.1 500 Internal Server Error Date Thu, 09 Aug 2007 02:14:37 GMT Server Apache/2.2.2 (Fedora) X-Powered-by PHP/4.4.4 Content-Length 0 Connection close Content-Type text/html
cookieの作成 †
用意したPHP
cookie.php
<?php
setcookie('testcookie',$_POST['pass']);
?>
cookie2.php <html> <body> <form method="POST" action="cookie.php"> pass <input type="password" name="pass" value="<?php print($_COOKIE['testcookie']);?>"> <input type="submit"> </form> </body> </html>
HTTPリクエストヘッダ
REQUEST POST /~kiyohara/cookie.php HTTP/1.1 Host okra.ark-web.jp User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 Accept text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language ja,en-us;q=0.7,en;q=0.3 Accept-Encoding gzip,deflate Accept-Charset Shift_JIS,utf-8;q=0.7,*;q=0.7 Keep-Alive 300 Connection keep-alive Referer http://okra.ark-web.jp/~kiyohara/cookie2.php Cookie testcookie=2341; __utma=81455047.957688777.1185194419.1186469022.1186625170.10; __utmz=81455047.1185194419.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); __utmb=81455047; __utmc=81455047 Content-Type application/x-www-form-urlencoded Content-Length 9
HTTPレスポンスヘッダ
RESPONSE HTTP/1.1 200 OK Date Tue, 07 Aug 2007 04:32:19 GMT Server Apache/2.2.2 (Fedora) X-Powered-by PHP/4.4.4 Set-Cookie testcookie=2341 Content-Length 0 Connection close Content-Type text/html
感想 †
- 任意のステータスコードのヘッダを生成出来るheader関数を知らずに時間を無駄にした…
- Cookieを生成させるプログラムを書いた事がなかったので勉強になった
![[PukiWiki] [PukiWiki]](image/sandbox.gif)



