Как переслать повар ie, используя выборку в getServerSideProps? - PullRequest
1 голос
/ 27 мая 2020

Я использую Next js для своего приложения. На странице я хотел бы получить данные из прошедшей аутентификацию конечной точки API ('/api/profile').

Я безуспешно пробовал следующее:

export async function getServerSideProps(ctx) {
  const { req, res } = ctx
  const cookies = cookie.parse(req.headers.cookie ?? '')
  const mycookie = cookies[MY_COOKIE] // mycookie exists and is set correctly

  if (mycookie) {
    const response = await fetch(process.env.SERVER_HOST+'/api/profile', {
      credentials: 'same-origin' // I tried with and without this, also tried "include" instead
    })

  ...

I есть 2 вопроса:

  • Есть ли способ избежать ввода абсолютного URL? (Я надеялся просто использовать '/ api / profile', поскольку это «внутренний» api)
  • Как мне убедиться, что повар ie, необходимый для получения данных из / api / profile, пересылается через fetch?

NB: Мой повар ie это httpOnly.

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Оказывается, мне разрешено вручную переслать повару ie через:

if (mycookie) {
  const response = await fetch(process.env.SERVER_HOST+'/api/profile', {     
    headers: {
      cookie: mycookie
    }
  })
...
0 голосов
/ 13 июля 2020

если вы используете свойства get на стороне сервера, то рекомендуется обрабатывать любые функции выборки данных, которые у вас есть, непосредственно в getserversideprops.

вызов fetch / api является избыточным. что вы можете сделать, так это извлечь функцию из api и использовать ее непосредственно в getserversideprops.

то, что вы сейчас делаете, это клиент -> рендеринг на стороне сервера -> api -> рендеринг на стороне сервера -> клиент

он может стать клиентом -> рендеринг на стороне сервера -client

...