我正在使用Sails.js开发一个API,并通过Ionic-React开发一个用户应用程序。在页面加载时,我发出axios请求以获取_csrf令牌。当我从登录表单向帆提交数据时,我总是收到403禁止响应。我在航行中禁用了csrf(config / security.js),然后可以检索响应。我正在标题中发送令牌。
我也试图获取会话cookie,但是它不起作用,我认为这可能是服务器拒绝请求的原因。
离子应用程序:
componentDidMount(this: this) {
axios.get('http://localhost:1337/api/v1/security/grant-csrf-token')
.then(response => {
const _csrf = response.data._csrf
this.setState({
form: {
...this.state.form,
_csrf: _csrf,
}})
});
}
OnSubmit:
const { emailAddress, password, _csrf } = this.state.form;
const config= {
data: {
"emailAddress": emailAddress,
"password": password,
},
headers: {
"x-csrf-token": _csrf
},
withCredentials: true,
jar:cookieJar,
};
axios.post('http://localhost:1337/api/v1/users/authenticate', null, config)
.then(res => {
console.log(res);
})
.catch(err => {
console.log(err);
})};
关于Chrome DevTools网络响应:
在Postman上,同样的请求有效,我得到200的用户数据,并且该请求中确实包含sails.sid cookie。
我不想禁用csrf保护,这不是解决方案。我丢失的是sails.sid cookie吗?
答案 0 :(得分:0)
我正在使用它,
axios({
method: 'post',
crossdomain: true,
url: apiFormUrl,
data: formData,
headers: {
"Content-Type": "multipart/form-data",
"Authorization": access_token
}
})
.then
它有效