Ajax POST 未被识别为当前访客 session、Laravel 5.3 的一部分
Ajax POST not recognised as part of current guest session, Laravel 5.3
我有一个页面,打开后,将一系列 ajax post 发送到通知端点。我想使用访客 session 在 post 中持久保存数据。无需登录,但无论如何都可以进行上下文控制。我正在使用 cookies。
我在从 session 恢复 objects 时遇到问题是这些 ajax 请求(它们变为空),我注意到在每个 post通知端点,我得到了 request()->session()->getId()
的不同值,这让我觉得 session 没有被正确传达,这就是为什么我没有看到我期望看到的 objects 持续存在的原因。
我的网址正在使用 "web" 中间件。
每次打开页面我都会:
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': '<?php echo csrf_token(); ?>'
}
});
</script>
确保 ajax 请求将在 header
中包含 CSRF 令牌
每次打开页面(不在通知中)时,我也会执行“request()->session()->regenerate();”以确保新的 session.
我是否应该在 POST 中发送任何其他内容(可能从 cookie 传递值)以将请求识别为上下文的一部分?
你应该让它成为无状态的。
- 从客户端向服务器发送请求
- 服务器生成并returns一个"token"
- 客户端接收令牌并将其存储在例如本地存储中
- 客户端随每个请求发送令牌作为 header(或作为 URL 中的参数)
- (服务器检查来自 header 的令牌)
优势是您可以独立 session 处理。
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){
}
});
我有一个页面,打开后,将一系列 ajax post 发送到通知端点。我想使用访客 session 在 post 中持久保存数据。无需登录,但无论如何都可以进行上下文控制。我正在使用 cookies。
我在从 session 恢复 objects 时遇到问题是这些 ajax 请求(它们变为空),我注意到在每个 post通知端点,我得到了 request()->session()->getId()
的不同值,这让我觉得 session 没有被正确传达,这就是为什么我没有看到我期望看到的 objects 持续存在的原因。
我的网址正在使用 "web" 中间件。
每次打开页面我都会:
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': '<?php echo csrf_token(); ?>'
}
});
</script>
确保 ajax 请求将在 header
中包含 CSRF 令牌每次打开页面(不在通知中)时,我也会执行“request()->session()->regenerate();”以确保新的 session.
我是否应该在 POST 中发送任何其他内容(可能从 cookie 传递值)以将请求识别为上下文的一部分?
你应该让它成为无状态的。
- 从客户端向服务器发送请求
- 服务器生成并returns一个"token"
- 客户端接收令牌并将其存储在例如本地存储中
- 客户端随每个请求发送令牌作为 header(或作为 URL 中的参数)
- (服务器检查来自 header 的令牌)
优势是您可以独立 session 处理。
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){
}
});