感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

POSTとGETとブラウザと。

スポンサーリンク

ブラウザはPOSTリクエストをキャッシュしない

POSTリクエストはブラウザにキャッシュされない。
ブラウザにキャッシュされるのはGETリクエストの場合のみとなる。

ブラウザのキャッシュはリクエストが以前に送られたものと同一であると判断したら、リクエストを送信せずに、キャッシュしていた同一リクエストに対するレスポンスを表示する。
POSTリクエストの場合は、ブラウザはキャッシングテーブルにあるどのレスポンスも参照しない。

GETリクエストでは、リクエストURLの長さの制限がある。
そのため、制限を超えたデータの部分が無視されてしまう。

POSTリクエストだからと言って安全というわけではない。
SSL接続やネットワーク・セキュリティをリクエストに対して適用する必要がある。

POSTリクエストでは、プレーンテキスト以外のデータも送信することができるので、データのタイプを指定しないと、サーバ側で受信したデータのタイプが判断できない。
サーバはデータのタイプを指定されて初めて、POSTデータを解読し、それを正しく処理することができる。

request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

コンテンツタイプ「x-www-form-urlencoded」は、名前/値のペアでプレーンテキストを送信していることをサーバに伝える。

GETリクエストURLの長さの制限はだいたい2000文字くらい。

SQLインジェクション
フォームに「'||'a'='a」のように入力されるとする。
すると、サーバ側ではWHERE文で以下のように解釈される。

SELECT * FROM hoge_table WHERE phone = ' '|| 'a' = 'a '
>||
こういうのはクライアント側でもサーバ側でもチェックしなければならない。
たとえば、ユーザの入力値はPHPでは以下のように検証する。
>|php|
$form_value = mysql_real_escape_string($form_val);

読んだ本

Head Rush Ajax ―学びながら読むAjax入門

Head Rush Ajax ―学びながら読むAjax入門


この本は曲者に見えるが、実はめちゃくちゃ良書。
わかりやすく解説されているし、詳しい。

感謝のプログラミング

今回で感謝のプログラミングは【433時間目】
10000時間まで、あと【9567時間】

昨日やった分も書く。
でも昨日は仕事もあって、あまり勉強できなかった。土曜日なのにもったいない。
今日もペースが遅いのでこれから頑張る。