jQueryからAjax経由でPHPにリクエストしCookieを操作する方法
先日PHPでCookie保存時にHttpOnly / Secure属性を設定する方法をメモしたが、HttpOnly属性が設定されていると当然JavaScript / jQueryから当該Cookieは取り扱えない。ただ、Ajax経由でPHPにリクエストすれば取り扱えそう。以下にソースコードをメモ。
ソースコード
Ajax側
Ajax経由でPHPにリクエストしCookieのon / offを#result部分に反映するという内容になる。
<div id="result"> <?php if( isset($_COOKIE['test_cookie']) ){ ?> on <?php }else{ ?> off <?php } ?> </div> <button id="cookie_btn">cookie btn</button> <script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script> $(function(){ $(`#cookie_btn`).on(`click`, function(){ $.ajax({ url:'./set_cookie.php', type: 'POST', }).done(function(result){ if( result == 0 ){ $(`#result`).text(`off`); }else if( result == 1 ){ $(`#result`).text(`on`); }else{ alert('エラーが発生しました。'); } }).fail(function() { alert('エラーが発生しました。'); }).always(function() { }); }); }); </script>
受け取り側
エラーチェック等は入っていない点に注意。
<?php if( isset($_COOKIE['test_cookie']) ){ $cookie_options = array( 'expires' => time() - 3600, 'path' => '/', ); setcookie('test_cookie', '', $cookie_options); $return = 0; }else{ $cookie_options = array( 'expires' => time() + 3600, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Lax' ); setcookie('test_cookie', true, $cookie_options); $return = 1; } echo $return;
所感
Ajax部分のソースコードが増えるのでやや面倒なものの、これでJavaScript / jQueryからもCookieを取り扱えそう。
関連記事
-
JavaScriptで数値のカウントアップ及びカウントダウン
JavaScript(一部jQuery)で数値のカウントアップ及びカウントダウン ...
-
jQselectableでセレクトボックスをリッチにする
入力フォームみたいなもので元々はテキストボックス内に 都道府県を入れてもらうとい ...
-
AjaxのJSONP使用でPHPで作った配列をJSに返す方法
AというサイトからBというサイトにAjax通信し、Bの方ではMySQLに接続して ...
-
jQueryで指定の行動をとった際に、クリックイベントを発火させる方法
あるシステムでAという要素をクリックした際に何らかの処理を行うという部分があり、 ...
-
adblock(広告削除)設定している場合はページを表示させない
iPhoneのSleipnirでネットをしていると「広告がブロックされたのでペー ...