HTTP

curlのHTTP/3実験実装を触ってみる

curlがHTTP/3の実験実装を公開したので試す。ライブラリとしてngtcp2を使う方法と、cloudflareのquicheを使う方法があるが今回はquicheを使う。

HTTPSで接続するための追加情報を格納するHTTPSSVCレコード

ESNIの鍵情報や、HTTP/2やHTTP/3で通信可能な事を示すAlt-Svc情報を通知するのに、DNSに新しくHTTPSSVCレコードを追加する仕様が提出されています。

提案仕様「HTTP Transport Authentication」について

HTTPレイヤにおいて、使用しているトランスポートレイヤの認証を行う「[HTTP Transport Authentication」という仕様がGoogleのDavid Schinazi氏から提案されています。

QUICのAckとロスリカバリについて

QUICでは、UDP上で信頼性のあるデータ通信を提供するトランスポートプロトコルです。QUICのAckとロスリカバリについて自分なりにまとめる。(暗号化およびHTTP/3については、関連記事参照)

処理中のPOSTリクエストを別のサーバで引き継ぐPartial POST Replayについて

処理中のPOSTリクエストをそのまま別のサーバで引き継げるようにする「HTTP Partial POST Replay」という仕様がFacebookのAlan Frindell氏から提出されています,

Cross-Origin-Embedder-Policyヘッダについて

ChromeがCross-Origin-Embedder-Policy (COEP)の実装に着手しそうなので、ざっと仕様を眺める(議論段階であり、正式な仕様ではありません) mikewest.github.ioちょっと話が難しいので間違ってたらすみません。なお以前は、仕様名は「Cross-Origin-Resource-P…

安全なコンテンツを要求するPrefer:safeヘッダ

Webサービスによっては、子供に見せたくない有害なコンテンツを非表示にできるサービスもあります。それの多くはcookieを使い、設定を保存するケースが多く個別に設定を有効にしていく必要があります。また、広告といった設定がし辛い部分もあります。こうい…

サービスやリソースの廃止時間を示すSunset HTTP ヘッダ (RFC8594)

RFC8594 で定義された、サービスの廃止時間を示すSunsetヘッダについて。

Cookie の SameSite=Lax をデフォルトにする提案仕様

20190823 追記 suidenOTI さまよりご指摘いただきました不具合があったためChrome80でのリリースに延期になったようです。 https://www.chromestatus.com/feature/5088147346030592 https://www.chromestatus.com/feature/563352162218803220190523 追記 Fir…

Cross-Origin-Opener-Policyについて

Cross-Origin-Opener-Policy (COOP)は現在、ChromeやFirefoxで実装が進められている機能です。 Chrome: Implement Cross-Origin-Opener-Policy firefox: Implement Cross-Origin-Opener-Policy 仕様としては、whatwgで長らく議論がされており、おそらく仕様…

新しいWebの双方向通信 "WebTransport" について

WebTransportという新しい双方向通信フレームワークの議論が始まっている。GoogleのPeter Thatcher氏らによって、W3C WICGにプロポーザルが投げられています。 discourse.wicg.ioWebTransportは、WebSocketのようなAPIをもち、QUICやHTTP/3上で多重化された…

HTTP/2においてTLS1.3のpost-handshake authenticationの禁止

GoogleのDavid Benjamin氏より「Using TLS 1.3 with HTTP/2」という提案仕様が出されています。この仕様自体は、単純にHTTP/2においてTLS1.3のpost-handshake authenticationを禁止するものです。HTTP/2でTLS1.2を使用している場合はrenegotiatoinが禁止され…

HTTP/3のヘッダ圧縮仕様QPACKについて

この記事では、HTTP/3で導入されるHTTPヘッダ圧縮の仕組みである「QPACK 」について説明します。(執筆時 draft 07)HTTP/3については下記を一読頂ければ asnokaze.hatenablog.com HTTP/2の場合 ハフマン符号 静的テーブル、動的テーブル HTTP/3とQPACKの導…

HTTP/2をバイトストリームトランスポートとして利用する提案仕様

HTTP/2コネクション上で任意のバイトストリームをやりとりできるようにする「Using HTTP/2 as a Transport for Arbitrary Bytestreams」という仕様がAppleの人らによって提案されている。IETF103でも議論(資料)になったが、その後 draft-01 が出ているのが現…

Secondary Certificate Authentication in HTTP/2 という仕様について

目次 Secondary Certificate Authentication in HTTP/2 用途 サーバ側から証明書を要求するパターン クライアント側から証明書を要求するパターン 通信フロー サーバ側から証明書を要求する場合 クライアント側から証明書を要求する場合 Secondary Certifica…

HTTP/3で接続してVPNとして使うMASQUEプロトコルの提案仕様

GoogleのDavid Schinazi氏が「The MASQUE Protocol」という仕様を提出している。初版のdraftであり、議論の呼び水としての立ち位置が強いがまずは読む。 MASQUE Protocol MASQUEはMultiplexed Application Substrate over QUIC Encryptionの略称です。この提…

リバースプロキシのエラーを示す Proxy-Statusヘッダの提案仕様

CDNやクラウドのロードバランサを使用するのは一般的です。これらのリバースプロキシは様々な理由により502 Bad Gatewayや504 Gateway Timeoutを返しますが、トラブルシュートするには情報が少ない場合があります。また、追加の情報を示す場合においても、各…

Fetch Metadataリクエストヘッダについて (Sec-Fetch-*)

ブラウザがリソースをFetchするさいに、そのFetchに関するメタ情報をリクエストヘッダに付与するというのがFetch Metadataという仕様です。この情報を用いれば、画像の読み込みのFetchで銀行用のAPIが叩かれるはずがないといった、明らかな不正なリクエスト…

Signed Exchange Reporting for distributors について

Webサイトを一つに固めて署名して再配布可能にする、Web Packagingという仕組みがあります。現在、Web Packagingは以下の3つの仕様からなっています。 Signed HTTP exchanges Bundled HTTP exchanges Loading AMPなどをより標準化された仕組みで実現するため…

HTTP/2 ORIGINフレームのセキュリティを改善する提案仕様

AkamaiのMike Bishop氏らから、「DNS Security with HTTP/2 ORIGIN」という提案仕様が出ている。簡単に読む ORIGINフレームとは ORIGINフレームとは、RFC8336で標準化されているHTTP/2の拡張フレームです。HTTP/2では、複数のドメインへのリクエストでもコネ…

QUIC,HTTP/3 の draft-17に関するメモ

12月8日に現在標準化が進められているQUICの仕様のdraft-17が出ました。以下の記事で書いたように、"HTTP over QUIC" のHTTP/3への名称が含まれています。 asnokaze.hatenablog.comその他にも幾つかの変更が含まれているのでざっと目を通す。 「Hypertext Tr…

新しいユーザエージェント表現 User Agent Client Hints の提案仕様

20190218追記 Implement `Sec-CH-UA-*` replacements for `User-Agent`. https://chromium.googlesource.com/chromium/src/+/2fddeeb74abcc3c9e3ba88df4cfb0c1c07e43fc6Chromeでは実装が進められている ユーザエージェントは歴史的背景により、複雑な文字列…

HTTP over QUICと、その名称について (HTTP3について)

さてHTTP/3というと、なにか新しそうなHTTPのような気がしますが、まず基本的なHTTPのセマンティクスに変更はありません。GETやPOSTといったHTTPリクエストがあって、ステータスコードを持つレスポンスが返されます。ただその伝達方法がQUICトランスポートに…

HTTP 418ステータスコードが予約される

「418 I’m a tea pot」としてよく知られる 418 ステータスコードについて、IETF HTTPbis WGで議論になっていました。「418 I’m a tea pot」はジョークRFCである「RFC2324 Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)」で定義されているステータス…

HTML要素からHTTP/2優先度を指定する Priority Hints が動いた

HTTP/2にはクライアントからHTTPリクエストの優先度を指定することができる。サーバはその優先度に基づいてHTTPレスポンスを返す(無視しても良い)。 一般的にはブラウザ自身が判断し、ページのレンダリングを早くするためにCSSなどは優先度を高く、画像は優…

キャッシュがHitした情報を示すCacheヘッダの標準化提案

CDNなどのサービスは、リクエストがキャッシュにヒットしたかどうかをx-cacheヘッダに格納してレスポンスしてくれますこのx-cacheヘッダは独自の形式であり、例えば以下のようになっています。 (CDNによっては、x-cache以外のヘッダを使うものもあります)f…

Loading Signed Exchangesの仕様 (WebPackaging)

WebPackagingと呼ばれる仕組みが議論されているのは、以前このブログでも紹介したとおりである。 asnokaze.hatenablog.comこの仕組みは3つの仕様からなる。 Signed HTTP exchanges (参考: HTTP/2 クロスオリジン サーバプッシュを可能にする提案仕様 - ASnoK…

Cookieにかわる Sec-HTTP-State ヘッダの提案

20190424 追記 IETFに提案仕様が提出されました https://tools.ietf.org/html/draft-west-http-state-tokens-00 Cookieの様々な問題を解決するために、Webセキュリティー界隈で活躍されるMike West氏から「Tightening HTTP State Management」というCookieに…

Fetchの仕様で application/report を送信時にCORSが必要になった

以前このブログでも書いたNetwork Error Loggingなど、Webサイトを表示する際に発生した問題のレポートを指定されたエンドポイントに送信する機能が増えてきている。 asnokaze.hatenablog.comこのレポート送信に関する仕様はReporting APIで定義されている。…

Clear-Site-Dataヘッダでブラウザに記憶されているデータを消す

Webブラウザは表示したサイトに関する様々なデータを記憶しています例えば cookie cache HTTP認証の情報 localStorage service worker registrations しかしサーバ側からこれらのデータを明示的に消すのは難しい場合があります。例えば、httpOnlyのcookieは…