X-XSRF-TOKEN header 使用 axios

X-XSRF-TOKEN header with axios

如果我设置 XSRF-TOKEN cookie 服务器端,是否必须设置任何内容才能发送 X-XSRF-TOKEN header?

https://github.com/axios/axios/blob/master/lib/defaults.js#L74 https://github.com/axios/axios/blob/master/dist/axios.js#L1072

看起来好像我没有,但我没有看到有人出去。

我要补充一点,我已将 withCredentials 设置为 true,所以我确实遇到了 OR 中的第一个检查:

var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?
            cookies.read(config.xsrfCookieName) :
            undefined;

          if (xsrfValue) {
            requestHeaders[config.xsrfHeaderName] = xsrfValue;
}

所以如果 config.xsrfCookieName 是默认值......

更新:

所以,我的 OPTIONS 预检 CORS 正在工作,现在 POST 也是,但是没有 X-XSRF-TOKEN 被发送。

  methods: {
    onSubmit(e) {
      this.axios
        .post(
          e.target.action,
          { data: this.form },
          {
            withCredentials: true,
            xsrfCookieName: "XSRF-TOKEN",
            xsrfHeaderName: "X-XSRF-TOKEN"
          }
        )
        .then(res => {
          console.log(res)
        })
        .catch(err => {
          this.errors.push(err)
        })
    }
  }

谢谢。

我有同样的问题,关于 cookie 上的 "secure" 标志,可以在请求的 cookies 选项卡上看到,但没有显示在 "application" 选项卡下的 cookies 上:

在我的例子中,我不得不要求后端设置它。 发生这种情况是因为,作为安全,您无法通过 javascript.

访问它
document.cookie // is empty