web-dev-qa-db-ja.com

ChromeはHTTP2_SESSION_RECV_INVALID_HEADER-ヘッダー名に無効な文字があるため、静的コンテンツをロードしていません-最終変更

    HTTP2_SESSION_RECV_INVALID_HEADER
--> error = "Invalid character in header name."
--> header_name = "last-modified:"
--> header_value = "Thursday,%2009-Aug-2018%2001:21:53%20GMT"

このエラーメッセージにより、静的コンテンツがChromeに表示されません

2
Michael C

この問題は、header_name = "last-modified:"のコロンであることが判明しました。基本的に、ngnix構成ファイルには2つのコロンがあり、Chromeがエラーをスローしました(Firefox、これを無視してページをレンダリングします)。 header_nameは単純にheader_name = "last-modified"でなければなりません

2
Michael C

エラーの説明は問題が「ヘッダー名」にあることを示しているにもかかわらず、問題は実際にはheader_valueにあると思われます。

StackOverflowでは、 HTTPヘッダーで使用される日付/時刻形式 は言う

セクション14.29 Last-Modified では、日付形式は次のようになっていることがわかります。

"Last-Modified" ":" HTTP-date

その使用例は次のとおりです。

Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT

エラーの最終変更日はそのようには見えません。スペースはありません。代わりに、日付が URLエンコード されたことを示す%20に置き換えられました。

標準のHTTPヘッダーをそのようにエンコードする必要がある理由はわかりません。 StackOverflowを参照してください: HTTPヘッダーでパーセントエンコーディングを使用することは適切ですか、それとも必要ですか? -最終変更ヘッダーをエンコードします。どのようにしたとしても、問題の解決策はそのエンコーディングを削除することです。

Chromeはおそらく最初の%に遭遇し、「そこにパーセントがあるとは思っていませんでした!無効な文字」と言っています。

1