Javascript Axios 419(未知状态)Laravel API csrf令牌已更改
当我使用Javascript Axios 419(未知状态)Laravel API csrf令牌已更改,javascript,ajax,laravel,debugging,axios,Javascript,Ajax,Laravel,Debugging,Axios,当我使用Axios请求我的Laravel后端并获取数据并请求另一个用于某些数据的API时,我遇到了错误,这很顺利,但在API返回数据后,我请求我的Laravel后端存储数据。它返回一个带有 app.js:360 POST 419(未知状态) 我已经尝试在我的PHP后端进行检查,只有在禁用VerifyCSRFToken中间件组时才会停止 但出于安全原因,我需要检查CSRF令牌 我能够理解为什么csrf令牌在发送请求时被更改 如果我只是将请求发送到我的laravel后端,那么一切正常,但是当我请求另
Axios
请求我的Laravel后端并获取数据并请求另一个用于某些数据的API时,我遇到了错误,这很顺利,但在API返回数据后,我请求我的Laravel后端存储数据。它返回一个带有
app.js:360 POST 419(未知状态)
我已经尝试在我的PHP后端进行检查,只有在禁用VerifyCSRFToken
中间件组时才会停止
但出于安全原因,我需要检查CSRF令牌
我能够理解为什么csrf令牌在发送请求时被更改
如果我只是将请求发送到我的laravel后端,那么一切正常,但是当我请求另一个api时,问题出现在将请求发送到我的后端
function addSession(url, formdata) {
//Add Session
axios.post(url, formdata)
.then(res => {
console.log(res)
var data = res.data;
if ((data.session_info != null && data.session_info != {})) {
console.log(data.session_info);
}
})
.catch(err => {
console.error(err);
})
}
function getApiDetails() {
//Start getting api details
axios.get('https://ipapi.co/json/').then(res => {
console.log(res)
var csrf = jr('meta[name="csrf-token"]').get(0).content;
var ses_id = jr('meta[name="verify-token"]').get(0).content;
var cur_url = jr('link[rel="canonical"]').get(0).href;
// console.log(csrf, ses_id, cur_url);
var url = '/session-adding-api';
var formdata = new FormData();
formdata.append('_token', csrf);
formdata.append('session_token', ses_id);
formdata.append('session_repeat', 0);
formdata.append('current_url', cur_url);
Object.entries(res.data).forEach(entry => {
// console.log(entry[0], entry[1]);
formdata.append(entry[0], entry[1]);
});
addSession(url, formdata);
})
.catch(err => {
console.error(err);
})
//End getting api details
}
function matchSession() {
//Match Session Start
var csrf = jr('meta[name="csrf-token"]').get(0).content;
var ses_id = jr('input[name="verify-token"]').get(0).content;
var url = '/session-matching-api';
var formdata = new FormData();
formdata.append('_token', csrf);
formdata.append('session_token', ses_id);
axios.post(url, formdata)
.then(res => {
console.log(res)
var data = res.data;
if ((data.match != true)) {
getApiDetails()
}
})
.catch(err => {
console.error(err);
})
//Match Session
}
matchSession();
我建议研究一下这个问题。如果CSRF令牌过期或无效,Laraval返回419表示“页面过期”。检查以确保您的CSRF值是正确的。@IceMetalPunk的可能重复看看我正在做什么来解决这个问题:我先禁用了CSRF保护,然后我尝试将CSRF令牌从前端发送到后端,并在后端通过session()->pull(“\u token”)拉取令牌并匹配它们,结果发现它们不相等。。。为什么?怎么办?以上这些都不能回答我的问题。。