通过vue-resource发起请求,express设置cookie,页面无法获取到cookie

发布于 2022-09-04 15:47:57 字数 825 浏览 22 评论 0

我发起的是跨域请求,分别是在localhost的3000和8080端口下。
我在前台js中对跨域做了如下设置,
这是在Vue.use(VueResource)后设置的

Vue.http.options.xhr = { withCredentials: true }

这是在一个.vue组件下设置的

  ready () {
    this.$http
      .get(config.dev.host + '/api/foo', {
        credentials: true
      })
      .then((data) => {
        console.log(data)
      }, (err) => {
        console.log(err)
      })
  },

这是后台
res.header('Access-Control-Allow-Credentials', true);

router.get('/foo', function (req, res, next) {
  res.cookie('userdd', 'd', { domain: 'http://localhost:8080/', maxAge: 9000000 })
  res.send({
    state: 0,
    msg: 'foolish'
  })
})

然后Set-Cookie字段会在network请求中中response中出现,但是document.cookie却没有。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(4

尐籹人 2022-09-11 15:47:57

同问

Vue.http.options.credentials = true

一样不生效

分分钟 2022-09-11 15:47:57

在跨域时,如果是非简单请求,浏览器会默认自动帮你发一个OPTIONS
请求,到服务器端请求服务器确认该请求的合法性,服务器端必须得有相应
的路由处理该请求,并认真返回200响应,然后浏览器才会再次发出
正常的、你需要的请求

app.all("*", function (req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');//设置来源域名,*表示所有的都可以请求(危险)
  res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
  res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
  if (req.method == 'OPTIONS') {
    res.send(200);
  } else {
    next();
  }
});

http://www.ruanyifeng.com/blo...*/

梦断已成空 2022-09-11 15:47:57

后台返回的时候还要加上httpOnly:false,我在这里 看到的

三月梨花 2022-09-11 15:47:57

问题解决了吗?如何设置和读取cookie啊

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