Node.js Nextjs&;自定义Express服务器-无法访问Express服务器中“http:true”的cookie集

Node.js Nextjs&;自定义Express服务器-无法访问Express服务器中“http:true”的cookie集,node.js,express,cookies,next.js,Node.js,Express,Cookies,Next.js,我试图解析一个cookie,它是通过在我的定制express服务器上包含属性httpOnly:true而设置的 现在在我的NextJs应用程序中,我可以在服务器端方法getServerSideProps中获取cookie,并从那里访问ctx.req.cookies中的cookie。但是,当我(从服务器端方法)对自定义服务器进行fetchapi调用时,在自定义服务器api调用中似乎无法访问cookie 这是我在server.ts中的express配置: // Express Configu

我试图解析一个cookie,它是通过在我的定制express服务器上包含属性
httpOnly:true
而设置的

现在在我的NextJs应用程序中,我可以在服务器端方法
getServerSideProps
中获取cookie,并从那里访问
ctx.req.cookies
中的cookie。但是,当我(从服务器端方法)对自定义服务器进行fetchapi调用时,在自定义服务器api调用中似乎无法访问cookie

这是我在
server.ts
中的
express
配置:

    // Express Configuration
    app.set('port', process.env.PORT || 3000)
    app.use(cors({ credentials: true, origin: true }))
    app.use(cookieParser())
    app.use(passport.initialize())
    app.use(express.json())
    app.use(express.urlencoded({ extended: true }))
以下是我在custom express server上设置cookie的方式:

res.cookie('rtk', refreshTokenJWT.token, {
    httpOnly: true,
})

这是从
getServerSideProps
方法获取api调用:

const response = await fetch('http://localhost:3000/refresh_token', {
    credentials: 'include',
    method: 'POST',
})
可能是因为我必须使用绝对url进行api调用,当我尝试执行
fetch('/refresh\u token',…)
时,我得到了错误:
TypeError:只支持绝对url

我可能会从
请求主体中的服务器端方法发送负载,并在定制express服务器中处理它,但这似乎不是最佳解决方案

请帮忙,提前谢谢

编辑:为了澄清,nextjs的服务器端方法
getServerSideProps
中出现了
wait fetch()


按照@O.Jones的建议,在
fetch
api调用中将cookie作为头发送是可行的,但我的印象是,这行不通,因为我设置了
httpOnly:true

尽管存在httpOnly属性,但您必须并且允许解析该服务器响应头

为什么??因为这只是对浏览器的一个指令,它应该强制执行隔离;当客户端代码只是另一个node.js进程时,它只是一个响应头

这是我在我的作者的单元测试中所做的反刍,听起来与您的需求非常相似;我总是得到两个cookies逗号分隔一个内衬格式,如我的膝关节炎REST程序(您的Express安装可以像这样逗号分隔,或发送两个设置cookie,所以你可能需要一个小的变化,如果你有后者的情况)。
//raw的格式是`koa.sess=YA5N/yi1khcc/qyylgNduj8vK3e2;路径=/;expires=太阳,2021年5月9日05:17:19 GMT;保护膝关节炎,即:路径=/;expires=太阳,2021年5月9日05:17:19 GMT;保护httponly`;
const scp=require('set-cookie-parser');
constcookies=scp.parse(scp.splitCookieString(headers['set-cookie']);
常量下一个请求头={
cookie:cookies.map(cookie=>cookie.name+'='+cookie.value).join(“;”)
};
我使用的是因为,我厌倦了在过期和分隔符中处理逗号

附带问题:abs URL TypeError:仅支持绝对URL


Cookie域规则是在将相对URL规范化为绝对URL之后应用的,因此我觉得这一次要问题只是关于节点样式的获取,没有浏览器样式的相对ajax URL所需的隐式服务器/路径,并且没有阻止任何与Cookie有关的内容。

getServerSideProps,顾名思义,表示它是在服务器端生成的

当您在
getServerSideProps
中进行提取时,您没有任何默认cookie。

请通过询问您的问题来澄清:您的
是否正在等待提取()
调用您的节点/express代码,而不是客户端代码?如果是,请检查此项。很好用。你能把它贴出来作为答复吗?这样我就可以接受了。多谢各位@琼斯