【问题标题】:Koa cookie returning `undefined`Koa cookie 返回“未定义”
【发布时间】:2017-03-12 14:29:36
【问题描述】:

从浏览器向服务器中的/generate url 发送POST 请求后,我想创建一个字符串并将其保存为cookie。当稍后从浏览器向服务器中的 /retrieve url 发送 GET 请求时,我想将该字符串作为响应发送给客户端。

这是我尝试过的:

routes.js

const Router = require('koa-router')
const router = new Router()

router.post('/generate', function * () {
  this.cookies.set('generatedString', 'example')
  this.response.body = 'String saved as cookie!'
})

router.get('/retrieve', function * () {
  const cookie = this.cookies.get('generatedString')
  console.log(cookie) // undefined!
  this.response.body = cookie
})

为什么执行this.cookies.get('generatedString') 会返回undefined,即使POST 请求处理程序已经运行并且应该有set 那个cookie?任何帮助将不胜感激!


编辑:如果它很重要,我认为值得一提的是我正在使用fetch API 来发出 POST 和 GET 请求。

【问题讨论】:

    标签: javascript node.js cookies koa koa-router


    【解决方案1】:

    如果它很重要,我认为值得一提的是我正在使用 fetch API 来发出 POST 和 GET 请求。

    fetch API 提到“默认情况下,fetch 不会向服务器发送任何 cookie,如果站点依赖于维护用户会话,则会导致未经身份验证的请求。”

    如果您希望 fetch 发送 cookie,您需要在您发出的请求中添加一个名为 credentials 的选项,并将其设置为 include

    POST 请求示例:

    const request = {
      method: 'POST',
      credentials: 'include',
      headers: ...,
      body: ...
    }
    
    fetch('/generate', request).then(...)
    

    GET 请求示例:

    fetch('/retrieve', { credentials: 'include' }).then(...)
    

    【讨论】:

      猜你喜欢
      • 2012-08-25
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 2022-06-29
      相关资源
      最近更新 更多