如何使用getServerSideProps中的访存转发Cookie?

时间:2020-05-26 21:36:13

标签: reactjs cookies next.js

我正在为我的应用程序使用Nextjs。在一个页面上,我想从经过身份验证的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
    })

  ...

我有2个问题:

  • 有没有一种方法可以避免必须输入绝对URL? (我希望只使用'/ api / profile',因为它是一个“内部” api)
  • 如何确保从/ api / profile获取数据所需的cookie通过fetch转发?

注意:我的Cookie是httpOnly

2 个答案:

答案 0 :(得分:1)

结果是我可以通过以下方式手动转发cookie:

if (mycookie) {
  const response = await fetch(process.env.SERVER_HOST+'/api/profile', {     
    headers: {
      cookie: mycookie
    }
  })
...

答案 1 :(得分:1)

如果您使用get服务器端道具,则推荐的方法是处理直接在getserversideprops中拥有的任何数据获取功能。

调用fetch / api是多余的。您可以做的是从api中提取函数,然后直接在getserversideprops中使用它。

您现在正在做什么 客户端->服务器端渲染-> api->服务器端渲染->客户端

它可以变成 客户端->服务器端渲染-客户端