1. ホーム
  2. php

PHP の POST リクエストで Authorization ヘッダーが見つからない

2023-08-19 06:07:24

質問

現在、POSTリクエストで呼び出したPHPスクリプトで、authorizationヘッダを読もうとしています。Authorization ヘッダーはトークンで入力されます。Authorization ヘッダーは、私の PHP スクリプトに到着する前に何らかの方法で削除されるようです。Postman(Chrome addon)を使用してPOSTリクエストを実行し、PHPスクリプトでCORSを有効にしました。私はapacheサーバーに直接アクセスすることはできません。

HTTPリクエストです。

Accept:*/*
Accept-Encoding:gzip,deflate
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4,ja;q=0.2
Authorization:Bearer mytoken
Cache-Control:no-cache
Connection:keep-alive
Content-Length:32
Content-Type:text/plain;charset=UTF-8
Host:www.myhost.com
Origin:chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
 User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)       
 Chrome/38.0.2125.104 Safari/537.36

PHPスクリプトです。

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Content-Type,      Accept");
header("Content-Type: application/json");

$headers = getallheaders();
echo $headers['Authorization'];

上記のスクリプトは、''(=何もない)を出力します。

どのように解決するのですか?

かなり時間が経ってから、この問題に対する解決策が見つかりました。どうにかして Authorization ヘッダが取り除かれていたのです。次の行を私の .htaccess に以下の行を追加することで、動作させることができました。

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]