Laravelを使用しているときに、リファラーを取得する必要があったのでやってみました。
今回はリファラーやユーザーエージェントなどのリクエストヘッダー情報を取得する方法を書いています。
リクエストヘッダー取得はRequestから
コントローラーでリクエストを、Requestクラス(Illuminate\Http\Request
)を使用して受けると思います。
リクエストヘッダー情報は受けたリクエストから参照できます。
public function send(Request $request) {
dd($request->headers);
}
$request->headers
でヘッダー情報を取得できます。
上記のように書くと、このメソッドにリクエストした時のヘッダー情報が下記のように取得できます。
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')
でも取得可能となっています。
コメント