部署后,当我尝试使用delete route
时,会抛出以下错误:
419 | PAGE EXPIRED
Failed to load resource: the server responded with a status of 419 ()
触发路由的vue组件内部功能:
const destroyEvent = (record) => {
if (confirm('Delete event?')) {
Inertia.delete(route('admin.event.destroy', {
id: record.id,
title: record.title,
image_path: record.image_path,
}), { preserveScroll: true })
}
}
Web路由:
Route::delete('/admin/event/destroy', [EventsController::class, 'destroyEvent'])->name('admin.event.destroy');
请求似乎没有到达EventsController
,我已经用dd()
进行了测试。
根据这个堆栈问题,它可能是一个CSRF
令牌问题。我试过那里提出的所有建议,但都无济于事。尽管评论:
AppHttpMiddlewareVerifyCsrfToken::class
从CCD_ 5移除CCD_。这是否表明存在CSRF
问题?
从这个laracasts问题中,我还尝试添加:
public function boot()
{
if($this->app->environment('production') || $this->app->environment('staging'))
{
URL::forceScheme('https');
}
}
到CCD_ 8,问题没有得到改善。
知道怎么解决这个问题吗?
我找到了一个解决方法,使用form.delete
而不是Inertia.delete
:
const destroyEvent = (record) => {
if (confirm('Delete Event?')) {
const form = useForm({
id: record.id,
title: record.title,
image_path: record.image_path
})
form.delete(route('admin.event.destroy'), { preserveScroll: true })
}
}
了解form
助手如何处理不同于Inertia
的CSRF
将是有用的。