WordPress に Authorization ヘッダが無いと言われたので

WordPress を 5.6 にしてみたところ、サイトヘルスの項目に Authorization ヘッダが無いとのメッセージが出ていた。

とりあえずこのヘッダが無くても、私の使用環境では問題無さ気な感じではあるのだが、API 経由で投稿する場合などに必要みたいで、Apache の場合だと、以下のように .htaccess に記載すれば良さそう。

<IfModule mod_rewrite.c>
	RewriteEngine On
	# RewriteCond %{HTTP:Authorization} . # 追記参照
	RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

・追記
上記で「RewriteCond %{HTTP:Authorization} .」を設定すると環境変数 Authorization になにも入っていないときはヘッダがセットされないため、WordPress のサイトヘルスでは引き続きヘッダが無いメッセージが出るようです。「WordPressでREST APIを利用して自動投稿を行う | 一郎くんどっとこむ」で公開されているようにこの部分を削除無いしはコメント化すると問題が解決しました。(追記終わり)

しかし何で、改めて Authorization ヘッダの値を取得して Authorization ヘッダにセットするという謎なことを行わないといけないのだろう。PHP-FPM だから?

でも設定ファイルにはヘッダを渡すように「SetEnvIfNoCase ^Authorization$ “(.+)” HTTP_AUTHORIZATION=$1」って入っているしなぁ。

・参考
Authorization ヘッダが取得できない環境への対応 · Issue #1607 · EC-CUBE/ec-cube · GitHub

・追記
うーむ、なぜかまたヘッダが無いと表示が出た。手動で .htaccess を編集して保存すると表示されなくなる。まるで .htaccess がキャッシュされているかのよう。謎だ。

・更に追記
Apache 2.4.13 以降では、「CGIPassAuth」というディレクティヴがあるので、こちらで試しています。
参考: http – Apache 2.4 + PHP-FPM and Authorization headers – Stack Overflow

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です