ajax - 使用 Ajax 的 Laravel 419 错误
问题描述
好吧,我先解释一下。我正在使用这样的 ajax 发送 PUT 请求:
//ajax function
$(document).on("click", ".question_no", function(){
current_color = rgb2hex($(this).css('background-color'));
q_index = $(this).attr('id').slice(5);
id_team_packet = $("#id_team_packet").val();
// startTimer();
if (current_color != '#ffc966') {
$(this).css('background-color', "#ffc966");
var status = "orange";
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '{{route('peserta.submit.ans.stat')}}',
method: 'put',
data: {q_index, id_team_packet},
success: function(data){
console.log(data)
}
})
}
})
注意我已经在脑海中设置了 CSRF 令牌,我也将其包含在我的 ajax 设置中,如下所示。它工作得很好:)。但是一旦我用中间件保护了这条路线,就像这样:
//middleware
public function handle($request, Closure $next)
{
if (Auth::user()) {
if (Auth::user()->role == 3) {
return $next($request);
}
if ($request->ajax()) {
return response()->json(['intended_url'=>'/'], 401);
}
return redirect('/');
}
if ($request->ajax()) {
return response()->json(['intended_url'=>'/'], 401);
}
return redirect('/');
}
//web.php
Route::middleware(['participant_only'])->group(function(){
Route::put('/peserta/submit-answer-status', 'PesertaController@submitAnsStat')->name('peserta.submit.ans.stat');
});
如您所见,它只接受角色为“3”的登录用户。如果用户尝试登录,它会重定向到'/'
. 现在我还检查请求是否使用了 ajax,我返回了一条代码为 401 的消息。但不幸的是,当应用中间件并对其进行 ajax 处理时,它返回此错误:
message
exception Symfony\Component\HttpKernel\Exception\HttpException
file -\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php
line 203
但是,如果一旦我删除了中间件,它就会起作用。我不知道问题出在哪里。哦,另一方面,如果我从 verifycsrftoken 中排除该特定路由,它会返回带有中间件和不带有中间件的正确响应。
我的问题是,问题出在哪里,我该如何解决?谢谢 :)
解决方案
推荐阅读
- django - 我可以为使用 postgres 的 Django Web 应用程序使用哪些托管服务?
- react-native - 以编程方式打开/关闭 react-native-datetimepicker?
- c++ - 在构造函数中初始化类成员变量
- python - 如何在pyspark或python中将列更改为行并获取重要KPI的值
- asp.net-core - 在 Asp.net 核心中阅读和保存 Outlook 电子邮件
- javascript - 在 R Shiny 中使用 JavaScript 显示 HTML:
- arrays - Leetcode 的 Subsets 问题解决方案不起作用我不知道为什么
- raspberry-pi - 无法使用 rc.local 和存档 .sh 运行 Django 应用程序
- shell - 运行甲板自动化脚本
- wordpress - 在 IIS V 10.0.19041.1 错误上安装 wordpress - 很抱歉。以下产品安装失败