在从浏览器向服务器中的/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请求。
答案 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(...)