我有些事情不明白。总是得到一个错误403。我在前端有一个代码(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); });
列表403
这是我的邮件头
标题
怎么了?
所以,一切都很简单。在(sails.js(文件security.js中更改allowCredentials: true
上的allowCredentials: false
,在前端(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
Sails在config>安全文件中有一个名为csrf的属性。如果你把它设置为true,你可以简单地添加
<input type="hidden" name="_csrf" value="<%= _csrf %> />
到您的表格或您需要的地方。
我正在航行1.0.2,它运行得很好。
在axios请求的标头中添加:
"x-csrf-token":窗SAILS_cals_csrf