【问题标题】:Laravel 5.5 MDN Fetch API set session variable not workingLaravel 5.5 MDN Fetch API 设置会话变量不起作用
【发布时间】:2018-05-03 06:07:48
【问题描述】:

我正在使用 Laravel 5.5

我正在尝试在 GET fetch('/ajax-get-save-session') 请求上设置会话变量。

Route::get('/ajax-get-save-session', function() { session(['my_key', 'Saved Session']) });

当我尝试以不同的路径访问会话变量my_key 时。

Route::get('/access-session', function() { return session('my_key'); });

返回空值。

这些路由在 Laravel web.php 上注册,我正在使用 MDN fetch API

有人吗?

【问题讨论】:

  • 您是在访问/access-session 之前访问/ajax-get-save-session 吗?
  • @linktoahref No. 它的 /ajax-get-save-session 在 /access-session 之前
  • 您使用的是哪个会话驱动程序?
  • 我正在使用文件作为会话驱动程序。

标签: php ajax laravel session laravel-5


【解决方案1】:

如果我了解您的问题。你正在寻找这个。试试这个:-

Use Session; //if your are using laravel 5.2 then add in top in routes. php or laravel 5.2 > greater versions in web.php 
// now put data in session
Route::get('/ajax-get-save-session', function() {
 Session::put('my_key','Saved Session');
});
//Access the session
Route::get('/access-session', function() { echo Session::get('my_key') });

希望对你有帮助!

【讨论】:

  • 我正在使用 Laravel 5.5,如我的帖子所述。你试过你的答案吗?这对我不起作用。您是否通过 GET Ajax 请求访问了“/ajax-get-save-session”路由?并检查 'my_key' 是否在 '/access-session' 路由中返回值?
  • 你使用的是哪个 Laravel 版本?
  • 我使用的是 5.2 版本
【解决方案2】:

这完全是我的错。我从没想过fetch() API 是导致我的问题的原因。它说描述

By default, fetch won't send or receive any cookies from the server, resulting in unauthenticated requests if the site relies on maintaining a user session (to send cookies, the credentials init option must be set).

通过这样做:

fetch(url, { credentials : 'include' }).then(response => response.json())

解决了我的问题!

【讨论】:

  • 好你自己解决了你的问题.....因为我的回答根据你的问题是正确的..快乐编码!
  • 是的!感谢您的答复。我的代码也有效。您的代码与我的代码相同,唯一的区别是您使用 Session Facade 而我使用的是全局会话助手。
猜你喜欢
  • 2018-07-02
  • 1970-01-01
  • 2017-03-17
  • 2018-04-20
  • 2017-12-21
  • 2015-04-09
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
相关资源
最近更新 更多