PHP + Ajax 设置 cookie 仅在根目录上发布时有效

问题描述 投票:0回答:0

我已经做了一个测试页面来测试使用 AJAX 和 PHP 设置的 cookie。当我们使用 GET 加载页面时,PHP 会设置一个 cookie

__test__=caca
然后一旦文档准备就绪,cookie 就会从前端删除,然后对自身执行 POST 并且 PHP 会为 cookie 设置一个新值
pipi
.

所有这些作品。

问题是,如果我将这个页面移动到一个文件夹中,比如 /test 并将 POST url 更改为

/test
,那么 cookie 不会从 POST 更新,尽管 cookie 被设置为 path=/.

如何解决这个问题?

<?php
switch($_SERVER['REQUEST_METHOD']){
    case 'GET':
    setcookie('__test__', 'caca', time() + 30 * 10000, '/');
    break;

    case 'POST':
    header("Set-Cookie: __test__=pipi; ".(time() + 30 * 10000)."; path=/;");
    header('Content-type: application/json');
    echo '{"success": true}';
    die();
    break;
}
?>
<script type="application/javascript">
$(document).ready(() => {
     console.log('ON LOAD',  document.cookie.match('(^|[^;]+)\\s*__test__\\s*=\\s*([^;]+)').pop());
     document.cookie =  '__test__=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/;';    
     setTimeout(() => {
         console.log('AFTER DELETE',  document.cookie.match('(^|[^;]+)\\s*__test__\\s*=\\s*([^;]+)'));        
         $.ajax({
             method:'POST',
             url:'/',
             data:JSON.stringify('{}'),
             async:true,
             processData:false,
             contentType:'application/json', 
             success:function(__data, __textStatus, __jqXHR){   
                 console.log('AFTER POST',  document.cookie.match('(^|[^;]+)\\s*__test__\\s*=\\s*([^;]+)').pop());
             }
         });
    
     }, 2000);
 }); 
 </script>
php jquery ajax cookies
© www.soinside.com 2019 - 2024. All rights reserved.