web-dev-qa-db-ja.com

Laravel get request headers

POSTMANを使用して、Authorizationを含むヘッダーと共にGETリクエストをAPIに送信しています。

ルートが401エラーを返すため、データヘッダーが機能しないことを知っています。

Authorizationヘッダーを次のように取得したかったのです。

$access_token = Request::header('Authorization');

しかし、NULLを返すことに注意してください。

だから私は値をキャッチしようとしました:

die(var_dump(Request::header()));

また、Authorizationヘッダーが含まれていないことに気付きました。 Cookieヘッダーをホストするだけです。


更新

Authorization: Bearer ACCESS TOKEN

27
majidarif

どのPOSTMANバージョンを使用しましたか?

ローカルマシンまたは管理対象サーバーを使用していますか、一部のホスティング会社はAUTHORIZATION HEADERを許可していません。

。htaccessの変更

 RewriteEngine On
 RewriteCond %{HTTP:Authorization} .
 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
47
dschniepp

Dschnieppからの答えは正しいですが、これにも問題があります。次の2つのことを行う必要があります。

  1. Mod_rewriteが使用可能でアクティブになっているかどうかを確認してください。
  2. パブリックフォルダーにあるLaravelの.htaccessファイルを更新します。

最初のポイントでは、「mod_rewrite」モジュールが別のphpファイルのphp_info関数で利用可能かどうかを確認する必要があります。それが利用可能な場合は、Webサーバーの構成に応じてアクティブにする必要があります.Nitrousボックスでhttpd.confファイルに次の行を追加しました:

<IfModule mod_rewrite>
   RewriteEngine On
</IfModule>

または、.htaccessファイルのモジュールもアクティブ化できます。

RewriteEngine On

次に、laravelアプリのルートにあるパブリックフォルダーにある同じ.htaccessファイルで、次の行を追加する必要があります。

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

これらの行は私のために働いた。 .htaccessファイルは次のようになります。

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

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

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

それだけです。Request:: header()配列にAuthorizationヘッダーが必要です。これらを明確にすることは、Apacheの問題であり、Laravel自体の問題ではありません。

8
daver

Laravel 5.5では、Apache_request_headersを使用して遊牧民を読むことができます。次の行でコントローラで読むだけです

$headers = Apache_request_headers();
dd($headers['Authorization']);

必ずIlluminate\Http\Requestを使用して追加してください。あなたのコントローラーで

3
sunshine

私の問題を解決したので、これをここに投稿しました。これはサブドメインに適用されますが、プレーンドメインでも同様に調整できます。これを上部の私のroutesファイル内で適用しました。

$newUrl = '';
try{
    $urlParts = parse_url($_SERVER['HTTP_REFERER']) ?? '';
    $newUrl = $urlParts['scheme'] . "://" . $urlParts['Host'];
    if(!stristr($newUrl, '.yourdomain.com')){
        $newUrl = 'false';
    }
}catch(Exception $e)
{}
header('Access-Control-Allow-Origin: ' . $newUrl);
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: access-control-allow-Origin,cache-control,content-type,postman-token');
0
Brandon Korenek