Laravel возвращает 419 ошибку при попытке загрузить файл на сервер
Laravel Framework 9.36.1
На клиентской стороне скрипты не менял, а вот Laravel был обновлен несколько месяцев назад, с тех пор загрузка не проверялась.
Обычные POST-запросы с JSON данными проходят успешно, но при попытке загрузить файл, стал получать ошибку.
Отправляю файл с помощью JS через fetch
fetch(this.url, {
method: 'POST',
headers: {
'X-XSRF-TOKEN': XSRFToken.value,
},
body: formData, // This is your file object
})
.then(
(response) => response.json() // if the response is a JSON object
)
.then(
(success) => console.log(success) // Handle the success response object
)
.catch(
(error) => console.log(error) // Handle the error response object
);
пробовал заменить
'X-XSRF-TOKEN': XSRFToken.value,
на
'x-xsrf-token': XSRFToken.value,
результат тот же, и как говорил, раньше работало
Заголовки запроса с ошибкой
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: ru,ru-RU;q=0.9,en-US;q=0.8,en;q=0.7
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 17982
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryeyOgAZQO5MwAr9Yv
DNT: 1
Host: kvadrat-local.ru
Origin: http://kvadrat-local.ru:8080
Pragma: no-cache
Referer: http://kvadrat-local.ru:8080/
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36
X-XSRF-TOKEN: eyJpdiI6IkYrdE1HbkZwS2I2Nmw4SlRHcmhONFE9PSIsInZhbHVlIjoiUDE3ZzFFQ3IyalJ2RGNiYzdBREd2MDBteTVNcGQ4UTExRFVsQTVERU9nNm56M01KRG1icFpOOC9sUnF4bHBqS1Zsekc0SXBRSVJ2ZXZvTFNMUUFQZGh4YzhkdnhINmxHMmx6T2tpLzFCZkcyczl3THd4bGtVMTNCdUhXaTZkemIiLCJtYWMiOiIzNTM4ZDFlNzhiZWJkM2RhODhmNTUxMWRkNWQwZWRjZWNkMjg2ZTQzODJlNThkNzJiNDM0MGIwZGQwZjBkYTlkIiwidGFnIjoiIn0=
Если же я отправлю обычный POST запрос, то все успешно проходит
Заголовки успешного запроса
accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: ru,ru-RU;q=0.9,en-US;q=0.8,en;q=0.7
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 193
content-type: application/json;charset=UTF-8
Cookie: userAuth=true; XSRF-TOKEN=eyJpdiI6IkYrdE1HbkZwS2I2Nmw4SlRHcmhONFE9PSIsInZhbHVlIjoiUDE3ZzFFQ3IyalJ2RGNiYzdBREd2MDBteTVNcGQ4UTExRFVsQTVERU9nNm56M01KRG1icFpOOC9sUnF4bHBqS1Zsekc0SXBRSVJ2ZXZvTFNMUUFQZGh4YzhkdnhINmxHMmx6T2tpLzFCZkcyczl3THd4bGtVMTNCdUhXaTZkemIiLCJtYWMiOiIzNTM4ZDFlNzhiZWJkM2RhODhmNTUxMWRkNWQwZWRjZWNkMjg2ZTQzODJlNThkNzJiNDM0MGIwZGQwZjBkYTlkIiwidGFnIjoiIn0%3D; kvdarat_session=eyJpdiI6IjQxQy9wTk1aOTRzVVNOZnQrT0hUQ2c9PSIsInZhbHVlIjoiMzNpVVhVL3dTakd2QWQwRGhkVC9mQ0MvRE8zbkNJYkc0b29Scnh2cTZYMHMwQ0E3RDNrZ0crVktxbkk3aHF5THZjVXNUd29aWUpiRkczS3lRUGtnNDZXVmpwK0YzaHFsM3ZYdGZhWjBWQ1NuVjZnWG1NYWNZR2ZXNlJrUVdJR2EiLCJtYWMiOiI1MzYwY2I3MDg0ZmMwNGQwNmY5ZjY1MzNjZjY1MjQ2ODFhODA1NWI0NTUzMTE4MzBiMDRlYjY5M2MyOGFjZjg5IiwidGFnIjoiIn0%3D
DNT: 1
Host: kvadrat-local.ru
Origin: http://kvadrat-local.ru:8080
Pragma: no-cache
Referer: http://kvadrat-local.ru:8080/
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36
x-xsrf-token: eyJpdiI6IkYrdE1HbkZwS2I2Nmw4SlRHcmhONFE9PSIsInZhbHVlIjoiUDE3ZzFFQ3IyalJ2RGNiYzdBREd2MDBteTVNcGQ4UTExRFVsQTVERU9nNm56M01KRG1icFpOOC9sUnF4bHBqS1Zsekc0SXBRSVJ2ZXZvTFNMUUFQZGh4YzhkdnhINmxHMmx6T2tpLzFCZkcyczl3THd4bGtVMTNCdUhXaTZkemIiLCJtYWMiOiIzNTM4ZDFlNzhiZWJkM2RhODhmNTUxMWRkNWQwZWRjZWNkMjg2ZTQzODJlNThkNzJiNDM0MGIwZGQwZjBkYTlkIiwidGFnIjoiIn0=
Подключение моего файла с роутами в сервис провайдере
public function boot()
{
$this->loadMigrationsFrom(__DIR__.'/db/migrations');
Route::prefix('api/user')
->middleware(['api'])
->group(__DIR__.'/routes/api.php');
}
Сам файл с роутами
<?php
use App\System\Entities\User\Controllers\AuthController;
use App\System\Entities\User\Controllers\UserController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::post('/images', [UserController::class, 'imageStore']);
Route::post('/add', function (Request $request) {
return 'ok';
});
Источник: Stack Overflow на русском