我有些事情不明白。总是收到错误403。我在frontend(vue.js)中有一个代码,在这里我从Sails.js中获得了一个令牌_csrf,没关系。
axios.get('http://localhost:1337/csrfToken')
.then(response => {
this.$store.commit('csrf_update', response.data._csrf);
console.log("_csrf===",response.data._csrf);
axios.defaults.headers.post['X-CSRF-Token'] = response.data._csrf;
})
我有一个后端sails.js,在security.js中设置
cors: {
allRoutes: true,
allowOrigins: 'http://localhost:8080',
allowCredentials: false,
allowRequestMethods:'GET, POST',
allowRequestHeaders:'content-type, X-CSRF-Token'}, csrf: true
我有一个像这样的令牌_csrf: lM8avM1X-KvKz9v2zLnbQZFf8lKOThX9Llb4
并且在请求时出现错误403。
axios.post('http://localhost:1337/login', form)
.then(response => {
this.$router.push('/kabinet');
}).catch(error => { console.log(error); });
那是我的标题
怎么了?
答案 0 :(得分:1)
Sails在config> security文件中具有一个称为csrf的属性。如果将其设置为true,则只需添加
<input type="hidden" name="_csrf" value="<%= _csrf %> />
到您的表格或您需要的地方。
我在航行中1.0.2,它运行的很好。
答案 1 :(得分:1)
所以,一切都非常简单。
在(sails.js)文件security.js中更改allowCredentials: false
上的allowCredentials: true
,在前端(vue.js)中更改axion,像这样添加参数withCredentials: true
axios.get('http://localhost:1337/csrfToken',{
withCredentials: true
}).then(response => {
console.log("_csrf===",response.data._csrf);
axios.defaults.headers.post['X-CSRF-Token'] = response.data._csrf;
})
,并且在所有axios中,请求必须为withCredentials: true
答案 2 :(得分:0)
在 axios 请求的头部添加:
"x-csrf-token": window.SAILS_LOCALS._csrf