Koa cookie 返回 `undefined`
Koa cookie returning `undefined`
从浏览器向服务器中的/generate
url发送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
})
为什么 this.cookies.get('generatedString')
return undefined
即使 POST 请求处理程序已经 运行 并且应该 set
该 cookie ?如有任何帮助,我们将不胜感激!
编辑: 如果它很重要,我认为值得一提的是我正在使用 fetch
API 来制作 POST 和 GET 请求。
In case it is of importance, I thought it would be worth mentioning that I am using the fetch API to make the POST and GET requests.
fetch
API提到"By default, fetch won't send any cookies to the server, resulting in unauthenticated requests if the site relies on maintaining a user session."
如果您希望 fetch
发送 cookie,您需要在发送的请求中添加一个名为 credentials
的选项,并将其设置为 include
的值。
示例POST请求:
const request = {
method: 'POST',
credentials: 'include',
headers: ...,
body: ...
}
fetch('/generate', request).then(...)
GET 请求示例:
fetch('/retrieve', { credentials: 'include' }).then(...)
从浏览器向服务器中的/generate
url发送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
})
为什么 this.cookies.get('generatedString')
return undefined
即使 POST 请求处理程序已经 运行 并且应该 set
该 cookie ?如有任何帮助,我们将不胜感激!
编辑: 如果它很重要,我认为值得一提的是我正在使用 fetch
API 来制作 POST 和 GET 请求。
In case it is of importance, I thought it would be worth mentioning that I am using the fetch API to make the POST and GET requests.
fetch
API提到"By default, fetch won't send any cookies to the server, resulting in unauthenticated requests if the site relies on maintaining a user session."
如果您希望 fetch
发送 cookie,您需要在发送的请求中添加一个名为 credentials
的选项,并将其设置为 include
的值。
示例POST请求:
const request = {
method: 'POST',
credentials: 'include',
headers: ...,
body: ...
}
fetch('/generate', request).then(...)
GET 请求示例:
fetch('/retrieve', { credentials: 'include' }).then(...)