Laravelでリクエストヘッダー情報(リファラ, UserAgent)を取得する方法

Laravel Laravel

Laravelを使用しているときに、リファラーを取得する必要があったのでやってみました。
今回はリファラーやユーザーエージェントなどのリクエストヘッダー情報を取得する方法を書いています。

リクエストヘッダー取得はRequestから

コントローラーでリクエストを、Requestクラス(Illuminate\Http\Request)を使用して受けると思います。
リクエストヘッダー情報は受けたリクエストから参照できます。

public function send(Request $request) {
    dd($request->headers);
}

$request->headersでヘッダー情報を取得できます。
上記のように書くと、このメソッドにリクエストした時のヘッダー情報が下記のように取得できます。
laravelでヘッダー情報取得

headersの配列のキーを指定して、getメソッドを使ってそれぞれ取得することが可能です。

$request->headers->get('キー名');

Laravelでrefererを取得する

リファラーは先程のheadersからgetメソッドを使用して、下記のように取得可能です。

public function send(Request $request) {
    dd($request->headers->get('referer'));
}

もしくは、$request->header('referer')request()->header('referer')といった書き方もできます。

Laravelでuser-agentを取得する

同様にして、下記のように書くことが可能です。

public function send(Request $request) {
    dd($request->headers->get('user-agent'));
}

他には、$request->header('user-agent')request()->header('user-agent')で取得できます。

Laravelでcontent-typeを取得する

同様にして、下記のように書くことが可能です。

public function send(Request $request) {
    dd($request->headers->get('content-type'));
}

他には、$request->header('content-type')request()->header('content-type')で取得できます。

Laravelでcookieを取得する

同様にして、下記のように書くことが可能です。

public function send(Request $request) {
    dd($request->headers->get('cookie'));
}

ヘッダーについているクッキーをそのままの状態で取得されます。

Laravelでクッキーを使う場合は自動的に暗号化されるので、Laravelで暗号化されたものを複合化した状態で取得したい場合には下記のようにcookieメソッドを使うと良いです。

$request->cookie('項目名');

引数に項目名を入れると、値が複合化されて取得できます。

終わりに

今回はリクエストヘッダー情報を取得してみました。
ユーザーエージェントやリファラなどは、たまに使うこともあるので覚えておきたいです。

$request->headers自体はSymfony\Component\HttpFoundation\HeaderBagクラスのインスタンスを返しています。
内部ではheadersの配列に対して、渡したキーで入っている内容を返しています。

その際にキーは大文字から小文字に変換されているので、渡す時には大文字でも取れるようになっています。

例えばrefererの場合は、$request->headers->get('Referer')$request->headers->get('REFERER')でも取得可能となっています。

コメント

タイトルとURLをコピーしました