Cookie не устанавливается в браузере - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь установить cookie, в котором есть мой токен авторизации. Я вижу, что он возвращается в заголовке ответа set-cookie: xxxxxx, но по какой-то причине браузер не хранит cookie.

На моем входном интерфейсе реакции http://app1.dev:3001 Я делаю вызов API POST следующим образом:

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

И у меня есть простой сервер Koa, работающий на http://localhost:3000

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-файл устанавливается нормально.

Почему куки не устанавливаются в браузере? Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 16 мая 2018

Когда вы используете http://localhost:3001 для внешнего интерфейса, ваши внешние и внутренние серверы совместно используют один и тот же домен (даже если они находятся на разных портах), поэтому вы можете видеть файл cookie, установленный запросом к вашему внутреннему серверу (и, таким образом, связанный с внутренним сервером). серверный домен).

Когда вы используете разные домены, вы просто не можете видеть cookie, так как инструменты dev прикреплены к странице, которая принадлежит другому домену. Но cookie сохраняется и будет отправлен с последующими запросами.

...