Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery &引用;“不允许使用方法”;会话到期时返回到ajax调用_Jquery_Ajax_Laravel_Session - Fatal编程技术网

Jquery &引用;“不允许使用方法”;会话到期时返回到ajax调用

Jquery &引用;“不允许使用方法”;会话到期时返回到ajax调用,jquery,ajax,laravel,session,Jquery,Ajax,Laravel,Session,我有一个表格,其中显示了类别列表和每行上每个类别的“删除”按钮。删除操作通过使用以下路径的ajax调用工作: Route::delete('category/delete/{id}','CategoriesController@destroy')->name('category.delete'); 它很好用。但后来我把页面打开了,过了一段时间,当页面仍然打开时,我又回来了。现在,当我试图删除一个类别时,我的控制器出现了方法不允许的错误。我认为这与会议即将到期有关 我的问题是: 1.为什么

我有一个表格,其中显示了类别列表和每行上每个类别的“删除”按钮。删除操作通过使用以下路径的ajax调用工作:

Route::delete('category/delete/{id}','CategoriesController@destroy')->name('category.delete');
它很好用。但后来我把页面打开了,过了一段时间,当页面仍然打开时,我又回来了。现在,当我试图删除一个类别时,我的控制器出现了方法不允许的错误。我认为这与会议即将到期有关

我的问题是:
1.为什么会发生这种情况
2.如何在服务器端处理此问题,以便在会话过期且用户尝试访问受保护的路由(通过ajax)时,服务器检测到会话过期,并向ajax调用发送特定响应,或将用户重定向到登录页面

我的ajax调用需要服务器返回一个json类型


谢谢,

当会话过期时,任何需要身份验证的路由都会重定向到/login端点,因为这只是
get&post
delete
失败

可能的解决办法:

  • 增加会话持续时间(默认值为120分钟)
  • 添加jquery拦截器以检测401和
    window.location.reload()
    浏览器窗口以使用户自己进入登录页面
  • 在脚本中放置一个计时器,每隔约5/10分钟“ping”服务器一次,因此会中断会话

哪种版本的Laravel?您是否正在使用
api
路由?如果是这样,会话没有通过它,您需要手动检查它或添加一个中间件。如果您的会话过期,它将重定向到登录(302)或给出和401响应代码。您应该检查您的请求的响应代码。@unatasanatarai:不,我没有使用api路由。@GopalKildoliya:在“网络”选项卡中,我可以看到此请求的状态代码为302 Found,但在“位置”字段中显示我再次被重定向到此页()而不是登录页。我想这就是为什么我得到的状态码405方法是不允许的,因为这是一个GET路由,但在这里被重定向为DELETE路由。你是说405吗?因为我拿到的是405而不是401。还有任何服务器端解决方案,比如检查传入请求的会话验证并重定向到登录页面的中间件。我想Auth中间件应该已经做到了,因为我的路由受到Auth中间件的保护。但事实并非如此!!只有ajax点击了auth检查,并被重定向到登录,而不是浏览器本身,并且您可以/hout检查405和401以获得最大覆盖率