HTTP
作成日時:2024-08-01以前
更新日時:2024-08-01
ALPN
- Application-Layer Protocol Negotiation
- TLSハンドシェイク中にどのHTTPのバージョンを使うかを決定
- HTTPSレコードと被るが、ALPNは細かく設定できる。
- HTTPSレコードはドメイン単位で、DNSクエリ時に対応しているHTTPバージョンを知ることができる
チャンク転送
- Transfer-Encoding:chunked
- レスポンスを分割して転送する
- 最後に0サイズデータを送付することで、転送の終了を表す
- レスポンスが大きかったり、全体サイズが不明な場合とか
- 全部処理が終わってから転送するのでは応答性が低下するため、徐々に送る。
- タイムアウトも防止する
- 大容量データ準備中にタイムアウトとか
- 転送効率の向上と、応答の高速化、エラー処理の容易化
- エラーしたチャンクを再送すればいいから
- Content-Encoding:圧縮系と共存できる
- JSONはどうなるかと思ったが、ストリーミングパースとやらがある
- チャンクサイズは変更できる
- 小さいとオーバーヘッドが大きくなる
圧縮時のセキュリティ
- HTTPSでデータを圧縮すると、通信データを覗き見られる可能性が発生する。
- 「CRIME」や「BREACH」などの攻撃
- 入力値を変えてデータを取得し、どれだけ変わったかで内容を推測できる
- 入力させなければいいし、頻繁にアクセスもさせなければいい
- 他のセキュリティ対策をすれば低減できる。
プリフライトリクエスト
- CORS関連
- OPTIONSメソッドで本来投げたいリクエストが許可されているか確認する。
- 許可しているオリジン/メソッド/ヘッダなどが返却される
- ブラウザはそれを見て処理する
- 単純リクエストの場合、プリフライトリクエストは飛ばない
- 機密データとか入っていなさそうな、シンプルなリクエスト
- オーバーヘッドと言えばオーバーヘッド