4

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

这是我尝试过的:

路由.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 请求处理程序已经运行并且应该具有该 cookie,但仍会this.cookies.get('generatedString')返回?任何帮助,将不胜感激!undefinedset


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

4

1 回答 1

2

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

fetchAPI提到“默认情况下,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(...)
于 2016-10-31T00:18:21.853 回答