簡體   English   中英

Cookie未在瀏覽器中設置

[英]Cookie not being set in browser

我正在嘗試設置一個包含我的身份驗證令牌的cookie。 我可以看到它在響應頭set-cookie: xxxxxx被返回,但無論出於何種原因,瀏覽器都沒有存儲cookie。

在我的反應前端http://app1.dev:3001我正在進行POST api調用:

return axios.get(
  `${apiUrl}/info`,
  { withCredentials: true }
)
.then(res => res.data)
.catch(console.error)

我有一個在http://localhost:3000上運行的簡單Koa服務器

const Koa = require("koa")
const Router = require("koa-router")
const bodyParser = require("koa-bodyparser")
const cors = require("@koa/cors")
const axios = require("axios")
const env = require("./env")
const KeyGrip = require("keygrip")

const app = new Koa()
const router = new Router()
const port = env("port")

const keyList = ["xxxxxxx",]
app.keys = new KeyGrip(keyList, "sha256")

router.get("/info", ctx => {
  console.log('req', ctx.req)
  ctx.cookies.set("token", "test_token", { signed: true, httpOnly: true })
  ctx.body = { ok: true }
})

const corsOptions = {
  origin: ctx => ctx.request.header.origin,
  credentials: true
}

app
  .use(cors(corsOptions))
  .use(bodyParser())
  .use(router.routes())
  .use(router.allowedMethods())

app.listen(port, () => console.info(`Listening on port ${port}`))

我懷疑它沒有被設置,因為它是跨域的。 當我使用http://localhost:3001作為我的前端時,cookie設置得很好。

為什么沒有在瀏覽器中設置cookie? 任何幫助將不勝感激。

當您使用http://localhost:3001作為前端時,您的前端服務器和后端服務器共享同一個域(即使在不同的端口上),因此您可以看到通過請求設置到后端服務器的cookie(並鏈接到后端服務器域)。

當您使用不同的域時,您無法看到cookie,因為開發工具附加到屬於另一個域的頁面。 但cookie已保存,並將隨后發送回請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM