Sailsjs + vuejs + axios + CSRF tokens



我有些事情不明白。总是得到一个错误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

相关内容

  • 没有找到相关文章

最新更新