プログラミング

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ポケモン 78
プログラミング
PHP,PHPポケモン,ポケモン
プレイヤーのグローバル化編 PHPポケモン 78

2日ほどwiki作成にいそいそと励んでいましたが、開発をお休みしていたわけではありません。追加機能を実装するに辺り、色々と改善点が挙がってきたので、このタイミングでしっかりと見直しをしました。   本格的なシステム開発では、最初に仕様書や設計書が作成され、それに沿って作成していくことになります...

PHPポケモン「状態異常+逃走編〜ねむり・こおり・やけど・どく〜」24
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「状態異常+逃走編〜ねむり・こおり・やけど・どく〜」24

状態異常の実装  今回は、前回作成した「まひ」を参考に、「ひんし」を除いた残りの状態異常も実装していきます。    クラスの作成  まずはそれぞれのクラスを作成します。前回解除時のメッセージを設定出来ていなかったので、まひと合わせて実装していきましょう。   状態異常:やけど(...

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にデータをセットする必要があり...

【無料】早起きをして神戸へ行こう!「為になる雑談朝活」
イベント
三宮,朝活,神戸
【無料】早起きをして神戸へ行こう!「為になる雑談朝活」

  朝活を実施することになりましたので、その目的な概要をまとめました。 神戸三宮での開催を予定しておりますので、もしお近くにお住まいの方で日時が会いましたらご参加ください。 土日祝辺りで週1日程度の不定期開催を予定しています。学びにつながる、けど参加しやすい雑談形式ということを主としています...

具体的にフリーランスで生きていくには -独立してからの働き方を徹底解説-
フリーランス
フリーランス,独立
具体的にフリーランスで生きていくには -独立してからの働き方を徹底解説-

  安定した仕事に就きたい。。。   多くの人がそう思っていた時代はどんどんと変化して、今やフリーランスでいることの方が安定しているのではないかと言えるような時代です。 そう、もはや会社員でいる人の大半が安定ではなくなってきているのです。 フリーランスでいる人も、根本的に安定という...

手っ取り早く情報強者になる簡単な方法
雑記
アウトプット,インプット,ニュース
手っ取り早く情報強者になる簡単な方法

  ニュースや情報番組、討論番組をみると、出演者の方々の情報量の多さに圧倒されることがあります。 また、ユニークな考え方に共感を得る人も多いでしょう。   どうやって、情報を仕入れているのか? なぜそんなことまで知っているのか?   メディアで取り上げられているような人や、活躍している人の多く...

フリーランスが打ち合わせで押さえておきたい3つのポイント【収入アップします】
フリーランス
フリーランス,営業
フリーランスが打ち合わせで押さえておきたい3つのポイント【収入アップします】

  フリーランスになれば、デザイナーやプログラマーといった制作をメインとする仕事の人でもクライアントと打ち合わせをしなければいけません。 特に独立や起業前のキャリアとして営業職に縁がなかった人からすれば、打ち合わせが苦手な人は多いはずです。   今回は、そういった営業ベタでやり方が分からない...

【Wi-Fi6とは】スマホやPCの買い替えは必要?騙されないための基礎知識
ネットワーク
5G,IEEE 802.11ax,Wi-Fi
【Wi-Fi6とは】スマホやPCの買い替えは必要?騙されないための基礎知識

  本格的に5G普及への取り組みが始まり、Wi-Fi6といった新世代の規格が出たことによって、超情報化社会へ加速しました。 ですが、こういったナンバリングが一般化することによって、わからずに高性能な機器を斡旋されて無駄な購入をさせられたり、わからないことを理由に詐欺的営業を仕掛けてくる悪意ある人...

カテゴリ

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