Я делаю AJAX-вызов, но получаю эту ошибку:
419 (неизвестный статус)
Понятия не имею, что является причиной этого, я видел в других постах, что он должен что-то делать с токеном csrf, но у меня нет формы, поэтому я не знаю, как это исправить.
мой вызов:
$('.company-selector li > a').click(function(e) {
e.preventDefault();
var companyId = $(this).data("company-id");
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: '/fetch-company/' + companyId,
dataType : 'json',
type: 'POST',
data: {},
contentType: false,
processData: false,
success:function(response) {
console.log(response);
}
});
});
Мой маршрут:
Route::post('fetch-company/{companyId}', 'HomeController@fetchCompany');
Мой метод контроллера
/**
* Fetches a company
*
* @param $companyId
*
* @return array
*/
public function fetchCompany($companyId)
{
$company = Company::where('id', $companyId)->first();
return response()->json($company);
}
Конечная цель - отобразить что-то из ответа в элементе html.
<meta name="csrf-token" content="{{ csrf_token() }}">
{{csrf_field()}}
в форму?{'_token': {{csrf_token()}}}
Ответы:
Используйте это в разделе заголовка:
и получите токен csrf в ajax:
Пожалуйста, обратитесь к документации Laravel csrf_token
источник
419 Unknown status
? Почему нет419 Invalid CSRF token
или какой-то существующий, полезный ответ? От куда это? Зачем? EtcДругой способ решить эту проблему - использовать
_token
поле в данных ajax и установить значение{{csrf_token()}}
в блейде. Вот рабочий код, который я только что попробовал на моем конце.источник
Это похоже на ответ Каннана. Однако это устраняет проблему, при которой токен не следует отправлять на междоменные сайты. Это установит заголовок, только если это локальный запрос.
HTML:
JS:
источник
используйте это на своей странице
и в вашем ajax использовали его в данных:
то есть:
Спасибо.
источник
Возможно, ваш домен сеанса не соответствует URL вашего приложения и / или хосту, используемому для доступа к приложению.
1.) Проверьте ваш .env файл:
2.) Проверьте config / session.php
Проверьте значения, чтобы убедиться, что они верны.
источник
Если вы уже сделали вышеупомянутые предложения и все еще имеете проблему.
Убедитесь, что переменная env:
Устанавливается на,
false
если у вас нет сертификата SSL, как на локальном.источник
в моем случае я забыл добавить входные данные csrf_token в отправленную форму. поэтому я сделал этот HTML:
JS:
источник
<input type="hidden" id="_token" value="{{ csrf_token() }}">
необходимо, даже если мы отправим whitouth ajax, иначе яДаже если у вас есть
csrf_token
, если вы аутентифицируете свои действия контроллера с помощью Laravel, уPolicies
вас также может быть 419 ответ. В этом случае вы должны добавить необходимые функции политики в вашемPolicy
классе.источник
Если вы загружаете .js из файла, вы должны установить переменную с помощью csrf_token в вашем «основном» файле .blade.php, куда вы импортируете .js, и использовать переменную в вашем вызове ajax.
index.blade.php
anotherfile.js
источник
некоторые ссылки =>
источник
просто сериализовать данные формы и решить вашу проблему.
источник
Вы должны получить токен csrf ..
После того, как вы делаете то же самое, проблема поднимается, просто добавьте этот метатег
< meta name="csrf-token" content="{{ csrf_token() }}" >
После этого также возникает ошибка, вы можете проверить ошибку Ajax. Тогда также проверьте ошибку Ajax
источник
источник
2019 Обновление Laravel, Никогда не думал, что я опубликую это, но для тех разработчиков, как я, использующих API выборки браузера на Laravel 5.8 и выше. Вы должны передать свой токен через параметр headers.
источник
Я
SESSION_SECURE_COOKIE
установил значение true, чтобы моя среда разработки не работала при входе в систему, поэтому я добавилSESSION_SECURE_COOKIE=false
в свой файл dev .env, и все работает нормально, моя ошибка заключалась в изменении файла session.php вместо добавления переменной в файл .env.источник
Эта ошибка также происходит, если вы забыли включить это в запрос на отправку ajax (POST), contentType: false, processData: false,
источник
Получил эту ошибку, хотя я уже отправлял токен csrf. Оказалось, что на сервере больше не осталось места.
источник
Это прекрасно работает в тех случаях, когда вам не нужна форма.
используйте это в заголовке:
и это в вашем коде JavaScript:
источник
Простой способ исправить неизвестный статус 419 на вашей консоли - поместить этот скрипт внутрь вашей формы. {{csrf_field ()}}
источник
Это сработало для меня:
После этого устанавливается обычный AJAX-вызов. Пример:
источник