Skip to main content

Real World HTTP 第2版の2章を読んだ

Real World HTTP 第2版の1章を読んだ
の続編

Real World HTTP 第2版 ―歴史とコードに学ぶインターネットとウェブ技術
を買ったマスタカです

2章 HTTP/1.0のセマンティクス:ブラウザの基本機能の裏側
を読んだので新しく知ったことをまとめる


curlコマンド
・URL ENCODE
curlに-dをつけると
formのデータを送信する
curlに–data-urlencodeをつけると
上記に加えて+が%20になったりして正式なエンコードになる

・マルチパートフォーム
curlに-Fをつけると
boundary=—hogehoge
みたいなものがヘッダーについて

ヘッダー + 空行 + コンテンツ
という形でデータが並ぶ。
データごとに違うヘッダーを設定できるのが特徴

---hogehoge
Content-Disposition: form-data; name="title"

Hello
---hogehoge
Content-Disposition: form-data; name="author"; filename="test.txt"
Content-Type: text/plain

aaa
---hogehoge

・圧縮
curlに–compressedをつけると
Accept-Encoding: deflate, gzip
がつく
deflateはzlibというライブラリで提供されている圧縮アルゴリズム

・クッキー
curlに-cをつけると受信したクッキーを保存する
curlに-bをつけるとファイルからクッキーを読み込んで送信する

・Basic認証
curlに-u user:pass をするとBasic認証にユーザ名とパスワードを送れる

 

ブラウザ
・ブラウザが同一サイトと判定する基準
スキーム
ドメイン(ホスト)
ポート
が同一であるとき

・SameSite
StrictかLaxだと、自分のサイトへのPostリクエストを他のサイトから実施したときにクッキーを飛ばさなくなる
Strictだとaタグの遷移でもクッキーが飛ばなくなる。ログインもやり直しになる

・キャッシュ
IF-Modified-Since
リクエスト時に時刻を送って更新がなければサーバーは304を返し、ボディを返さない

・Expires
キャッシュだとサーバーにリクエストするためボディがあっても遅延する
Expiresならリクエストしなくなるので高速になる

・Etag
ユーザによってキャッシュするかしないかを変えたい時がある
If-None-Match
を使って更新がなければ304を返却する
Etagは値として時刻でなくハッシュを利用する

 

Golang
・if文
代入して、そのまま条件にできる

if err := f(); err != nil {
// error handling
}

https://qiita.com/tenntenn/items/791bb47f4cee178b52c3

 

こうして2章のブラウザの基本的な仕組みを理解しましたとさ
curlって結構リッチなんですねw
まだまだ続くよ

関連記事:

Pocket