Ajax POST未被识别为当前访客会话的一部分,Laravel 5.3

时间:2016-10-24 00:17:50

标签: php ajax laravel laravel-5.3

我有一个页面,打开后,将一系列ajax帖子发送到通知端点。我想使用访客会话在帖子中保留数据。无论是登录,还是上下文控制。我正在使用cookies。

我遇到的问题是从会话中恢复对象是这些ajax请求(它们是空的),我注意到在通知端点的每个帖子上,我得到request()->session()->getId()的不同值,这使我认为会话没有正确传达,这就是为什么我没有看到我期望看到的对象持续存在。

我的网址正在使用“网络”中间件。

每次打开页面我都会这样做:

<script>
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': '<?php echo csrf_token(); ?>'
        }
    });
</script>

确保ajax请求在标题中包含CSRF令牌

我也会'request() - &gt; session() - &gt; regenerate();'每次打开页面时(不在通知中)以确保新会话。

我应该在POST中发送其他内容(可能是传递来自cookie的值)以将请求标识为上下文的一部分吗?

2 个答案:

答案 0 :(得分:1)

你应该让它无国籍。

  • 从客户端向服务器发送请求
  • 服务器生成并返回一个&#34;令牌&#34;
  • 客户端收到令牌并将其存储在例如本地存储
  • 客户端向每个请求发送令牌作为标头(或URL中的参数)
  • (服务器从标题中检查令牌)

优势是您对会话处理的独立性。

答案 1 :(得分:0)

        var _id     = 1011;
        var url     = "/test";

        $.ajax({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
            beforeSend: function(){

            },
            url: url,
            data: {id: _id},
            type: 'POST',
            dataType: 'json',
            success: function(result){

            }
        });