我正在尝试向 Laravel 应用程序中 api.php 中定义的路由之一发送 POST 请求。以下是相关路线定义:
Route::middleware('auth')->group(function(){
Route::post('/image-recognition', [DashboardController::class, 'imageRecognize'])->name('image-recognition');
Route::post('/bolt-size/change', [DashboardController::class,'boltSizeQtyChange'])->name('bolt-size-qty-change');
Route::post('/register-submit', [RegisterController::class, 'register'])->name('register-submit');
})
这是我使用 Blade 模板引擎的 AJAX 请求的 JavaScript 代码:
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.withCredentials = true;
xhr.setRequestHeader("X-Requested-With", 'XMLHttpRequest');
xhr.setRequestHeader("Content-type", 'multipart/form-data'); // or application/json
xhr.setRequestHeader("X-CSRF-Token","{{ csrf_token() }}");
xhr.setRequestHeader("X-UID","{{auth()->user()->id}}");
xhr.onload = function() {
// onload code here
};
xhr.onerror = function() {
console.error('Network error occurred');
};
// Convert the input value to JSON format
var data = JSON.stringify(requestData);
xhr.send(data);
我的 AJAX POST 请求被重定向到 /login 路径,可能是由于缺少所需的用户身份验证。然而,在检查开发人员工具后,我注意到该请求同时包含 XCSRF-TOKEN 和 laravel_session。如何确保我的请求包含可以通过身份验证中间件的必要身份验证凭据?我在这里错过了什么吗?
您的问题很模糊,但请记住以下几点: 您不能在 api 路径中使用会话,但可以在 web 中使用会话。 您的 ajax 请求在您通过身份验证后是否通过? 如果是,那么问题可能是由于api中路径的定义,因为正如我所说,你不能在api中使用session,所以将路径转移到web.php