Javascript 膝关节炎曲奇返回“未定义”
从浏览器向服务器中的Javascript 膝关节炎曲奇返回“未定义”,javascript,node.js,cookies,koa,koa-router,Javascript,Node.js,Cookies,Koa,Koa Router,从浏览器向服务器中的/generateurl发送POST请求后,我想创建一个字符串并将其保存为cookie。当GET请求稍后从浏览器发送到服务器中的/retrieveurl时,我希望将该字符串作为响应发送到客户端 以下是我尝试过的: routes.js const Router = require('koa-router') const router = new Router() router.post('/generate', function * () { this.cookies.s
/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')
返回undefined
,即使POST请求处理程序已经运行并且应该设置该cookie?任何帮助都将不胜感激
EDIT:如果它很重要,我想值得一提的是,我正在使用
fetch
API进行POST和GET请求
如果它很重要,我想值得一提的是,我正在使用fetchapi发出POST和GET请求
其中提到,“默认情况下,fetch不会向服务器发送任何cookie,如果站点依赖于维护用户会话,则会导致未经验证的请求。”
如果希望fetch
发送cookie,则需要在发送的请求中添加一个名为credentials
的选项,并将其设置为include
POST请求示例:
const request = {
method: 'POST',
credentials: 'include',
headers: ...,
body: ...
}
fetch('/generate', request).then(...)
fetch('/retrieve', { credentials: 'include' }).then(...)
获取请求示例:
const request = {
method: 'POST',
credentials: 'include',
headers: ...,
body: ...
}
fetch('/generate', request).then(...)
fetch('/retrieve', { credentials: 'include' }).then(...)