【问题标题】:Browser does not set cookie浏览器没有设置cookie
【发布时间】:2017-12-17 01:14:49
【问题描述】:

在我的 NodeJS Express 应用程序中(使用羽毛构建);我正在尝试使用来自客户端 javascript 的客户端 fetch 的 cookie。我有 Express 使用 cooke-parser 中间件。

我尝试将 credentials 标头设置为 same-origin,但这已经停止工作(昨天工作正常,今天工作了几次......但我一直在尝试将 cookie 构建成我想要的需要,但它似乎不能可靠地工作)。

这是我的测试快递路线:

app.post('/setjwt', (req, res, next) => {
 res.cookie('acokie', 'lol');
 res.status(200);
 res.send();
});

我在 chrome 开发工具控制台中使用 fetch 来测试发送请求,如下所示:

fetch('/setjwt', { method: 'POST', headers: { credentials: 'same-origin' } } );

这些是标题:

但是“应用程序”选项卡中没有列出 cookie,document.cookie 中也没有。

我有这条路线的原因有两个:

  1. 了解 cookie 如何工作以及如何与 Express 互操作。
  2. 完全摆脱这种 hacky 路线并正确设置标头/环境,以便浏览器尊重我的羽毛身份验证服务的 Set-Cookie 响应标头。

登录页面的feathers客户端设置了fetch作为它的rest实现,我可以设置

【问题讨论】:

    标签: node.js http express cookies


    【解决方案1】:

    fetch('/setjwt', { method: 'POST', headers: { credentials: 'same-origin' } } ); 不起作用。

    凭证属性cannot be specified like that with fetch。正确的代码是:

    fetch(
      '/setjwt',
      {
        method: 'POST',
        credentials: 'same-origin',
        headers: { whatever: 'somevalue' }
      });
    

    至于设置它以使羽毛身份验证服务能够工作,同样,它不是一个普通的标头,所以brushing up on the documentation 希望可能会产生一些有用的东西,但我认为羽毛休息包装器不会超过 fetch supports passing non header options .

    【讨论】:

      猜你喜欢
      • 2019-05-16
      • 2014-05-07
      • 2021-02-14
      • 2021-11-30
      • 2021-12-20
      • 1970-01-01
      • 2014-08-10
      • 2020-06-06
      • 2018-10-26
      相关资源
      最近更新 更多