egg.js + vue时,post请求出现 csrf 的疑问
egg.js config.default.js 配置:
// csrf
config.security = {
csrf: {
// enable: false
},
domainWhiteList: ['http://localhost:8080', 'http://192.168.1.106:8080']
}
config.cors = {
origin: '*',
allowMethods: 'GET, HEAD, PUT, POST, DELETE, PATCH'
}
通过 controller 把 csrf 传递给vue
async setCsrf() {
const { ctx } = this
ctx.body = {
status: 200,
csrf: ctx.csrf
}
}
Vue 中的配置
mounted () {
axios.get('http://127.0.0.1:7001/api/v3/login-csrf').then(res => {
console.log(res.data.csrf);
sessionStorage.setItem('csrfToken', res.data.csrf)
})
},
methods: {
submitForm () {
axios({
url: 'http://127.0.0.1:7001/api/v3/admin',
method: 'post',
data: {
_csrf: sessionStorage.getItem('csrfToken'),
username: this.ruleForm.username,
password: this.ruleForm.password
},
headers: {
'x-csrf-token': sessionStorage.getItem('csrfToken')
}
})
.then(respanse => {
console.log(respanse.data);
})
},
}
这样配置每次post是都会出现“ 安全威胁csrf的防范” 的提示
response headers 中已经有 x-csrf-token
暂时不能关闭 csrf 功能,因为项目后台是采用vue,而前台显示是用egg渲染模板的,所以要保留 csrf 功能;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请问你怎么解决的呢?我也遇到这个问题了,但又不想关闭csrf。