Koa cookie返回`undefined`

时间:2016-10-30 05:50:11

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

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

以下是我的尝试:

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
})

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

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

1 个答案:

答案 0 :(得分:0)

  

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

fetch API提及&#34;默认情况下,fetch不会向服务器发送任何Cookie,如果网站依赖于维护用户会话,则会导致未经身份验证的请求。&#34; < / p>

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

POST请求示例:

const request = {
  method: 'POST',
  credentials: 'include',
  headers: ...,
  body: ...
}

fetch('/generate', request).then(...)

示例GET请求:

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