egg.js + vue时,post请求出现 csrf 的疑问

发布于 2022-09-11 23:01:35 字数 1346 浏览 15 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淑女气质 2022-09-18 23:01:35

请问你怎么解决的呢?我也遇到这个问题了,但又不想关闭csrf。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文