プログラミング

Laravelで生成したCookie情報をjQueryで取得する方法【JavaScript】

ajax api JavaScript jQuery Laravel PHP
Laravelで生成したCookie情報をjQueryで取得する方法【JavaScript】

 

今回はLaravel開発備忘録です。

ajaxでapi認証してviewに記述したhtmlデータを取得するために、cookieを使ったapi_tokenの受け渡し手順をまとめてみました。

 

Laravelを使った開発をしている人は、ぜひ参考にしてくださいね。

 

 

Laravel側の処理

 

まずはcookieにデータをセットする必要があります。大きく分けると方法は2つです。

  • ファザードを使った方法
  • メソッドを使った方法

Laravel公式 HTTPリクエスト

 

引数は基本的に同じなので、使用環境や状況に合わせて利用してください。今回はviewを返す際にcookieを付与する例を使って説明するので、メソッドを使った方法をご紹介します。

 

 

responseにcookieの付与

 

cookieのメソッドは以下の通りです。

cookie(‘name’, ‘value’, $minutes, $path, $domain, $secure, $httpOnly)

 

これをviewのメソッドに繋げることで、返却する際にcookie情報をセットすることができます。今回は管理者ホーム画面を想定してユーザー情報に格納されたapi_tokenを返却してみます。

// apiトークンを返却
return response()->view('admin.home')
        ->cookie('api_token', Auth::user()->api_token, 30);

 

名前に「api_token」値に「Auth::user()->api_token」cookieの有効時間を30分としました。実際にjsファイル側でクッキー情報の取得結果を確認してみましょう。

console.log($.cookie("api_token")); // undefined

 

これだけでは取得できませんね。問題はLaravel側にあります。

 

 

cookieの暗号化を解除する

 

Laravelでは生成したcookie情報を暗号化しているため、単純にcookieをセットするだけではLaravel内でしか使用できません。なので、暗号化を解除するための処理を加えます。

app/Http/Middleware/EncryptCookies.php
protected $except = [

        'api_token',

    ];

 

$exceptにcookieの名称を指定しておけば、セットしても暗号化されることはありません。もしEncryptCookies.phpのミドルウェアが有効になっていなければコメントアウトを解除しておきましょう。

app/Http/Kernel.php
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
     'web' => [
          \App\Http\Middleware\EncryptCookies::class,
     ];
];

 

これで暗号化されずにcookieへセットすることができます。jsファイルで取得結果を見てみましょう。 

console.log($.cookie("api_token")); // undefined

 

まだ駄目ですね。実はcookieの引数に問題があります。

jsファイルでcookieを取得するためには、controllerviewに連結させたcookieに第7引数までをセットしなければなりません

// apiトークンを返却
return response()->view('admin.home')
        ->cookie('api_token', Auth::user()->api_token, 30, null, null, false, false);

 

こうすることで、jsでも取得できるcookieをセットすることができます

console.log($.cookie("api_token")); // vqZcNw7SkqhJxrfh*************

 

無事取得することができましたね。これでLaravel側での処理は完了です。

 

 

JavaScript側の処理

 

Laravel側でcookieapi_tokenをセットしたら、次にjs側でセットされたcookie情報を取り出しますapi_tokenのやり取りができれば、ajaxを使ってapi認証ができるため、より動的なアプリケーション開発が行なえるようになります。

SPAであれば、vue.jsなどフレームワークを使った開発が主流ですが、部分的に動的な処理を入れるぐらいであれば、jQueryを使った方が簡易かつ開発時間の短縮にもつながるので便利です。そのためにも、cookieを使ったやり取りは覚えておいて損はありません。

 

 

jquery.cookie.jsの読み込み

 

JavaScriptでもcookieの処理は可能ですが、全cookieを文字列で取得してしまうため加工が面倒です。今回は配列で簡単に受け取ることができるようにjQueryのjquery.cookie.jsというプラグインを使用します。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

 

CDNを使用したくないのであれば、配布サイトでjsファイルをダウンロードしてresourcesに設置してください。 

 

 

cookieの取得

 

Laravelの処理でも少し登場しましたが、セットされたcookieを取得するには以下のように記述します。

$.cookie(name);

 

引数を指定しなければ、セットされているcookie情報すべてを配列で取得します。もし複数データを管理する場合はまとめて取得して、jsファイル内で展開するという方法もあります。

 

今回はapi_tokenにセットしたcookieを取得したいので、nameにはapi_tokenを指定します。 

var api_token = $.cookie("api_token");
console.log(api_token); // vqZcNw7SkqhJxrfh*************

 

 

おまけ

 

laravelapiajaxで接続する例をまとめておきます。  

// ajaxでhtmlのテンプレートを取得
var host = location.protocol + "//" + location.host;
var html = $.ajax({
        type: "GET",
        url: host + "/api/admin/html_template",
        async: false,
        headers: {
                Authorization: "Bearer " + $.cookie("api_token");
        },
        dataType: "html"
}).responseText;

 

こうすれば、viewなどでhtmlパーツを準備してjsファイル内で使用することができます。ajaxdataをもたせれば、Laravel上でリクエストデータとして扱えるので、比較的自由にやり取りができるようになります。

 

cookieを使いたくない人は、metaタグにapi_tokenをセットしてnameidを付与すればjQueryで簡単に取り出せますので、プラグインを使わずにapi_tokenのやり取りも可能です。

 

 

まとめ

 

いかがだったでしょうか。

今回は「Laravelで生成したcookie情報をjQueryで取得する方法」をご紹介しました。

みなさんもWebアプリケーション開発を楽しみましょう。

 

注目の記事

PHPポケモン「2進化ポケモン実装編」8
プログラミング
PHP,PHPポケモン,プログラミング学習,ポケモン
PHPポケモン「2進化ポケモン実装編」8

  記念すべき?第8回目で遂にタイトル変更です。 (旧)ピカチュウから学ぶオブジェクト指向 (新) PHPポケモン   機能増設によりオブジェクト指向云々より、PHP学習がメインになったので泣く泣く変更です。(今の所)順調に続いているのも、多くの方?が見てくれているおかげです。感謝感激雨ア...

本当に価値のある宣伝方法 〜多くの人が実践している【間違った努力】とは〜
マーケティング
Facebook,note,Twitter,YouTube,集客
本当に価値のある宣伝方法 〜多くの人が実践している【間違った努力】とは〜

  YouTubeやTwitter、Facebookやnoteなど、いろんなサービスを使った集客方法があります。集客という視点ではなく、それ自体に人を集めたいという人も多いでしょう。   フォロワーやチャンネル登録者数を増やすために、多くの人が様々な取り組みをしていますが、その中でもひときわ意味のないことをただ繰り返して...

【Youも明日からデザイナー】デザインセンスを磨くコツ3つ
デザイン
YouTube,サムネイル,バナー
【Youも明日からデザイナー】デザインセンスを磨くコツ3つ

  デザイナーにセンスは必要か?   この問いに、私は必ず「必要ない」と答えます。確かに、センスを磨くことは大切ですが、それがあたかも才能のように表現するのは間違っていると思っているからです。 デザインは誰にでもできます。そしてオリジナリティは各自が必ず持っています。だからこそ、なりたい...

ピカチュウから学ぶオブジェクト指向 〜ステータス導入編〜 6
プログラミング
PHP,PHPポケモン,オブジェクト指向,ポケモン
ピカチュウから学ぶオブジェクト指向 〜ステータス導入編〜 6

  PHPをピカチュウ(ポケモン)から学ぶ大人気コーナー、第6回目は「ステータス機能の導入編」です。   前回(第5回)で終了段階でのサンプルコードを公開しているので、もし本記事から始める人はぜひそちらを参考にしてください。    ※お詫び   調べたところによると、ポケモンの経験...

PHPポケモン(α)攻略wiki「稼ぎ方特集」
雑記
PHP,PHPポケモン,ポケモン
PHPポケモン(α)攻略wiki「稼ぎ方特集」

前回に引き続き、連続wiki投稿でPHPポケモン溺愛ユーザーにとっては歓喜の2日間です。   という冗談も踏まえつつ、今回は「稼ぐ」ということについて真面目に考察してみたいと思います。もしリアル世界での「稼ぐ」を目的に来た人は、盛大にブラウザバックしてください。   PHPポケモンにおける「稼ぐ」...

引き継ぎ考慮のメッセージID重複回避編 PHPポケモン 58
プログラミング
PHP,PHPポケモン,ポケモン
引き継ぎ考慮のメッセージID重複回避編 PHPポケモン 58

今回のPHPポケモンでは内部の作り込みをしていきます。見た目への反映は無いので、プレイを楽しみにしている人や、ポケモンが好きで毎日チェックしてくれているような人は、ブラウザをバックしてもらって問題ありません。   それでは、前々回辺りから保留にしていた「メッセージIDに重複回避対策」についてです。 &...

進化直後の技習得編 PHPポケモン 65
プログラミング
PHP,PHPポケモン,ポケモン
進化直後の技習得編 PHPポケモン 65

進化直後の技習得 パーティー機能を導入に合わせて、至る場所を修正することになり、合わせて未実装だった機能を導入していきます。 見た目にはわからない部分や、とある条件が重ならなければ起こらない部分の作り込みが多いため、プレイユーザー目線からすると少し面白みが無いかも知れません。 ですが、そういっ...

反動技編(はかいこうせん・とびひざげり)PHPポケモン40
プログラミング
PHP,PHPポケモン,ポケモン
反動技編(はかいこうせん・とびひざげり)PHPポケモン40

反動技とは ポケモンでは反動技というものがあります。反動によっても様々で、現在の仕組みのままでも実装可能なものや、新たに処理が必要なものまであります。なので、一律で反動技という同じ処理は出来ません。  反動技(ポケモンwiki) https://wiki.ポケモン.com/wiki/反動技 反動技(はんどうわざ...

カテゴリ

SEO対策 イベント デザイン ネットワーク ビジネスモデル フリーランス プログラミング マーケティング ライティング 動画編集 雑記

タグ

5G Adobe AfterEffects AI ajax amazon Animate api artisan atom Automator AWS Bluetooth CSS CVR description EC-CUBE4 ECショップ ESLint Facebook feedly foreach function Google Google AdSense Honeycode htaccess HTML IEEE 802.11ax Illustrator Instagram IoT JavaScript jQuery jQuery UI keyword LAN Laravel Linux MacBook MAMP meta MLM MySQL NoCode note OS OSI参照モデル Paypal Photoshop PHP phpMyAdmin PHPポケモン PremierePro rss SEO SEO対策 Sequel Pro Skype SNS SSH Symfony TCP/IP title Toastr Trait Twig Twitter UCC V系 WAN WebSub Wi-Fi wiki Windows WordPress XAMPP xml Xserver YouTube YouTuber Zoom アーティスト アウトプット アクセス層 アニメーション アフィリエイト イーブイ インターネット インプット エンジニア オブジェクト指向 お金配り クリック単価 クリック数 コミュニケーション能力 コロナ コンサルティング サムネイル システムエンジニア スタートアップ スタイルシート スパム データベース ディープフェイク デザイナー デザイン テレワーク ナンパ ニュース ネットワークモデル ノマドワーク バナー ピカチュウ ビジネス フィード フリーランス ブロガー ブログ プログラマー プログラミング プログラミング学習 プログラミング教育 プロトコル ホームページ制作 ポケモン マークアップ マーケティング メール リモートワーク レンダリング 三井住友 三宮 仕事依頼 児童デイ 児童デイサービス 児童発達支援 公開鍵 初心者 助成金 勉強法 営業 広告 広告収入 必勝マニュアル 放課後等デイサービス 朝活 楽天 深層学習 無線LAN 独立 神戸 福祉 秘密鍵 翻訳 自己啓発 英語 見積書 計算機 読書 起業 迷惑メール 配列 銀の弾丸 集客 雑学力