自作プロキシ (Nekoxy2) の HTTP/2 (RFC7540) 対応にあたっての私なりの理解をまとめました。
HTTP/2 の解説自体は他サイトのほうがわかりやすかったり正確だったりすると思うので、あくまでも参考程度に。
RFC においては SHOULD とか MUST とかの違いは重要ですが、ここに書くの面倒なので必要に応じて調べましょう。
HPACK(RFC7541) については RFC も別だし長いし記事を分けます。
→ HPACK 理解メモ – CAT EARS
自作プロキシ (Nekoxy2) の HTTP/2 (RFC7540) 対応にあたっての私なりの理解をまとめました。
HTTP/2 の解説自体は他サイトのほうがわかりやすかったり正確だったりすると思うので、あくまでも参考程度に。
RFC においては SHOULD とか MUST とかの違いは重要ですが、ここに書くの面倒なので必要に応じて調べましょう。
HPACK(RFC7541) については RFC も別だし長いし記事を分けます。
→ HPACK 理解メモ – CAT EARS
.NET Core 3.0 Preview 4 で HttpClient
の HTTP/2 サポートが追加されたようですね。
Announcing .NET Core 3 Preview 4 | .NET Blog
今までの .NET Standard では SslStream 自体が HTTP/2 の事実上必須な機能(ALPN)に対応しておらず、.NET Standard 2.1 でようやくサポートされる見込みだったため、どうやらちゃんとくるようで一安心というところです。
(HttpClient
についてはこれのせいかは不明ですが…… SocketsHttpHandler
が HTTP/2 対応していなかったのは確か)
しかしながら .NET Framework 4.8 の方は .NET Standard 2.0 止まりになることになっているので、HTTP/2 サポートは今後あるのかどうかすら怪しいですね……
Given many of the API additions in .NET Standard 2.1 require runtime changes in order to be meaningful, .NET Framework 4.8 will remain on .NET Standard 2.0 rather than implement .NET Standard 2.1.
Announcing .NET Standard 2.1 | .NET Blog
とはいえ .NET Standard はあくまでも API 標準を定めただけで実装は各プラットフォーム依存ですから、動くようになる可能性はあるかも?
とりあえず .NET Framework は 4.8 の時点では HttpClient
+ HttpClientHandler
では動作しそうにありません。
BCL 以外でなら WinHttpHandler を使い、HttpRequestMessage
のバージョンを明示的に指定することで、利用できます(Win10 1607↑ + .NET FW 4.6↑ に限る)。
参考: How to make the .net HttpClient use http 2.0?
実は Core 2.0 までも Windows 環境に限れば WinHttpHandler に丸投げしていたようで、HttpClient
で HTTP/2 が動作します。
Core 2.1 以降 SocketsHttpHandler に移行し、環境依存を減らした為、HTTP/2 に一時的に非対応となっていたようです。
英語版(ndp48-devpack-enu.exe とか)を入れれば直る。
各国語版は Language Pack でしかない。
にも関わらず、少なくとも .NET Framework 4.8 時点ではブラウザの言語設定を見て勝手に言語選択されて Language Pack (ndp48-devpack-jpn.exe とか)がダウンロードされてしまう。
ので一旦ブラウザの言語設定を英語にし、英語版をダウンロードしましょう。
Azure AD のカスタムドメインを追加しようとしたところ、指定の TXT レコードを登録してもどうしても検証が通らなかった。
詳細を見たところ、セルフサービス サインアップとやらが怪しい……
調べてみたところ、どうやら Office 365 等でメールアドレスを使ってサインアップした際、当該ドメインの組織が存在しない場合は非管理テナントとかいう管理者が存在しないテナント/ディレクトリが勝手に作成されてしまうらしい。
セルフサービス サインアップで登録されたドメインの対処方法 – Exchange ブログ JAPAN
この非管理テナントが存在する限り、Azure AD にそのドメインを登録することができない。
↑のブログに従い、Office 365 管理センターから非管理テナントの管理権限を奪取。
その後セルフサービス サインアップで作成されたユーザーの UPN を変更するなどして登録したいドメインを抹消。
そして無事に Azure AD にカスタムドメインを設定できましたとさ。
※このようなことが起きるため、会社メアドなどで勝手に MS サービスにセルフサービス サインアップすることは禁止すべきらしい。
%ProgramFiles(x86)%\Steam\steamapps\common\SteamVR\resources\settings\default.vrsettings
の enableCamera なんちゃらを全部 true
にして再起動したら直った。
多分 "enableCamera" : true
だけでいい。