Jquery laravel查看模式导致401注销



我用laravel构建了一个web应用程序,但登录后打开模态时遇到问题。JQuery似乎导致了401(未经授权的错误),导致超时。

这似乎主要发生在谷歌浏览器上,但发生的时间非常不一致。所以有时当我登录时,打开/加载模态后会出现401错误,有时我不会。

我打开的模态中填充了一个Ajax调用,该调用列出了MYSQL数据库中的一组用户。

我将控制台中的错误添加为附件。出于隐私原因,我屏蔽了URL。红色的处理登录,紫色的是打开模态并列出用户的urljquery 401打开模式时出错

我不知道JQuery是如何导致这个401错误的,有人有建议吗?

默认情况下,每当Laravel收到POST请求时,它都需要一个_token参数。通常使用带有{!! csrf_token !!}的blade将其添加到表单中。使用Ajax也没什么不同。如果要执行POST请求,则需要将_token参数添加到请求中。您可以将它直接添加到Ajax参数中,或者通过将其添加到布局视图<meta name="csrf-token" content="{{ csrf_token() }}">;中,让jQuery在所有Ajax请求中处理它。这就是你的JavaScript。

$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});

确保它在任何Ajax请求之前运行。

这不会添加_param,但会向Ajax POST请求添加X-CSRF-TOKEN头。Laravel将检查_token参数X-CSRF-TOKEN,因此您实际上只需要其中一个。

如果你已经添加了它,但仍然遇到这个问题,请尝试在浏览器的"网络选项卡"中查看Laravel的响应。在Chrome中,按F12打开DevTools。转到"网络"选项卡并刷新页面。在左侧面板上,您将看到页面发出的所有HTTP请求。您可以通过单击XHR过滤器来过滤Ajax请求。点击您失败的请求(它将显示为红色)。在右侧面板上,您将看到所有请求和响应数据。您可以点击回复查看Laravel的回复。如果响应为HTML,"预览"选项卡将格式化所有HTML/CSS。

最新更新