プログラミング

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ポケモン 37
プログラミング
PHP,PHPポケモン,ポケモン
ポケモンセンター編 PHPポケモン 37

ポケモンセンター  バトルシステムを作る関係上、どうしてもダメージを受けることが多くなってきたので、そろそろポケモンセンターを建設(作成)します。 とは言っても、ポケモンセンターに行って交換やらボックス整理などができるわけではなく、ただ回復ポイントを設置するだけの簡単な処理です。   HPの回復 ...

保守っていくらで何をする?フリーランスWebエンジニア対象!保守業務について解説します
フリーランス
システムエンジニア,フリーランス,プログラマー
保守っていくらで何をする?フリーランスWebエンジニア対象!保守業務について解説します

  サイトの保守を頼まれたけど、具体的に何をやればいいの?   フリーランスの、特に独学やスクール上がりでなった人にとっては保守は何をすれば良いかわからないという悩みを抱えている人は多いのではないでしょうか。 システム開発会社や制作会社にいた人でも、どのぐらいの金額で請け負うのが良いか検...

仕事用PCは2年で買い替えろ!その理由とは?
フリーランス
MacBook
仕事用PCは2年で買い替えろ!その理由とは?

  「あなたはパソコンをどのタイミングで買い替えますか?」   私は先日、2015年モデルのMacbookPro15インチから最新モデルのMacbookPro13インチに買い替えました。その理由は、メモリが32GBになったことや、15インチが持ち運びという点で見れば向いていないと判断したということ、そこそこの年数が経...

ブログ運営者のための「よくわかるSEO対策」フィード編
SEO対策
atom,feedly,rss,WebSub,WordPress,xml,フィード
ブログ運営者のための「よくわかるSEO対策」フィード編

  アメブロやFC2など優れたブログサービスが存在している中、好きなデザイン、こだわった機能を求めてWordPressを選択される方も多いですね。 また、コーポレートサイトにWordPressを用いる方もいるでしょう。ただしSEO対策がしっかりとされていなければ、提供されているサービスに太刀打ちできません。  もちろん...

PHPポケモン「アクション制御編」27
プログラミング
JavaScript,jQuery,PHP,PHPポケモン,ポケモン
PHPポケモン「アクション制御編」27

  今回のPHPポケモンでは主に画面の作り込みをしていきます。 とは言っても、ガッチリCSSを書いてよりゲームらしい見た目にするわけではなく、あくまで「ゲームシステムを再現するため」だけに整えていくのが目的です。   ということで、今回はPHPよりもBootstrapさんとjQueryさんに活躍してもらいます。   ...

デザイン
サムネイル,デザイナー,バナー,広告
デザイナーにセンスは必要ない!誰でも作れるおしゃれなサムネイル

  「デザイナーになるためにはセンスが必要ですか?」   バナーづくりの小規模講習会を実施した際に、この質問した人がいました。 よくある質問なのですが、いつも決まって自分の回答は「NO」です。   実際に一流のデザイナーとして活躍するレベルまでいくには、確かにセンスと呼ばれているものが必要...

オブジェクト指向有効活用編 PHPポケモン 93
プログラミング
PHP,PHPポケモン,ポケモン
オブジェクト指向有効活用編 PHPポケモン 93

オブジェクト指向の有効活用 β版に向けたPHPポケモンの構成見直し、今回は「オブジェクト指向」の役割について、より理解を深めつつ、保守性も良くなるように整えていきます。   機能を持たせる 様々なプロパティを定数や静的変数へ以降していますが、今回は「静的メソッド」の活用範囲を増やしていきます。まず...

アーカイブのディスクリプションを管理画面で設定する方法【SEOに強いWordPressブログ・サイト作り】
プログラミング
PHP,SEO,WordPress
アーカイブのディスクリプションを管理画面で設定する方法【SEOに強いWordPressブログ・サイト作り】

  WordPressで作ったサイトやブログはSEO対策がしやすいという利点があり、より検索に強いサイトへ仕上げることができます。 ですが、SEO対策に特化しているテーマでもアーカイブページのディスクリプション設定ができないものは多く、別で設定する必要があるものがほとんどです。   今回は、より検索で強く...

カテゴリ

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 独立 神戸 福祉 秘密鍵 翻訳 自己啓発 英語 見積書 計算機 読書 起業 迷惑メール 配列 銀の弾丸 集客 雑学力