Webを支える技術
本書を読んだ目的
業務でPUTメソッドについて調べていて、ググっただけでは納得できる情報がなかったので
本書を購入し読みました。
ですので、知りたかった情報を中心に記載しようと思います。
冒頭の良い言葉
冒頭に良いこと書いてます。
シンプルさは究極の洗練である。
----- Leonardo da Vinci
Webの特徴を一言で言い表すならば、シンプルさに尽きる
第1部 Web概論
Webを支える技術はHTTP、URI、HTML
REST
アーキテクチャスタイル
スタイルに合わせてRESTを構成する
| スタイル | 説明 |
|---|---|
| クライアント / サーバ | ユーザインタフェースと処理を分離する |
| ステートレスサーバ | サーバ側でアプリケーション状態を持たない |
| キャッシュ | クライアントとサーバの通信回数と量を減らす |
| 統一インターフェース | インタフェースを固定する |
| 階層化システム | システムを階層に分離する |
| コードオンデマンド | プログラムをクライアントにダウンロードして 実行する |
第2部 URI
http://blog.example.jp/entries/1
| 項目 | 内容 |
|---|---|
| URI | http |
| スキーム | blog.example.jp |
| パス | /entries/1 |
http://blog.example.jp:8000/search?q=test&debug=true#n10
| 項目 | 内容 |
|---|---|
| URIスキーム | http |
| ユーザー情報 | yohei:pass |
| ホスト名 | blog.example.jp |
| ポート番号 | 8000 |
| パス | /search |
| クエリパラメータ | q=test&debug=true |
| URIフラグメント | #n10 |
第3部 HTTP
HTTPはTCP/IPをベースとしたプロトコル
RFC2616
HTTP 基本
| 階層 | プロトコル |
|---|---|
| アプリケーション層 | HTTP、NTP、SSH、SMTP、DNS |
| トランスポート層 | UDP、TCP |
| インターネット層 | IP |
| ネットワークインタフェース層 | イーサネット |
HTTPメソッド
| メソッド | 意味 |
|---|---|
| GET | リソース取得 |
| POST | 子リソース作成、リソースへのデータの追加、そのほかの処理 |
| PUT | リソース更新、リソース作成 |
| DELETE | リソースの削除 |
| HEAD | リソースのヘッダ(メタデータ)の取得 |
| OPTIONS | リソースがサポートしているメソッドの取得 |
| TRACE | 自分宛にリクエストメッセージを返す(ループバック)試験 |
| CONNECT | プロキシ動作のトンネル接続への変更 |
CRUD
GET、POST、PUT、DELETEでCRUD
| CRUD名 | 意味 | メソッド |
|---|---|---|
| Create | 作成 | POST/PUT |
| Read | 読み込み | GET |
| Update | 更新 | PUT |
| Delete | 削除 | DELETE |
PUT
リソースの更新
リソースの作成
POSTとPUTの使い分け
複数のリソースを作成する場合はPOST、1つのリソースを作成する場合はPUTっていう覚え方してます。
第4部 ハイパーメディアフォーマット
第5部 Webサービスの設計
調査結果
Ajaxの通信際にPUTメソッドを使っていて、PUTメソッドは脆弱性があるから、POSTに実装し直してくださいってことで
この本でHTTPメソッドのことを勉強しました。
でも、原因はHTTPではなく、WebDAV経由で外部からアクセスされた際にHTTPから継承しているPUTメソッドを使って
リソースの更新を行い、OSを乗っ取られる可能性があるとかないとかっていう脆弱性らしく・・・
