Reactjs 下一个JS getInitialProps中缺少请求信息

Reactjs 下一个JS getInitialProps中缺少请求信息,reactjs,axios,next.js,Reactjs,Axios,Next.js,我正在为我的应用程序制作一个身份验证高阶组件,它向我的API发出GET请求,然后在响应不是HTTP 200时重定向用户。API使用cookies对用户进行身份验证,而HOC在客户端上工作得非常好。但是,当我在服务器上发出API请求时,每次都会收到HTTP401响应 我在API上记录了服务器和客户端响应的响应,并注意到服务器请求只有几个请求头,而客户端请求有更多的请求头,包括cookie头和XSRF令牌头服务器上的请求发送如此少的头的原因可能是什么? 这是我的HOC代码: 从“React”导入Re

我正在为我的应用程序制作一个身份验证高阶组件,它向我的API发出
GET
请求,然后在响应不是
HTTP 200
时重定向用户。API使用cookies对用户进行身份验证,而HOC在客户端上工作得非常好。但是,当我在服务器上发出API请求时,每次都会收到
HTTP401
响应

我在API上记录了服务器和客户端响应的响应,并注意到服务器请求只有几个请求头,而客户端请求有更多的请求头,包括cookie头和XSRF令牌头服务器上的请求发送如此少的头的原因可能是什么?

这是我的HOC代码:

从“React”导入React
从“../utils/redirect”导入重定向
const withAuth=(C:React.ComponentType)=>{
类AuthComponent扩展了React.Component{
静态getInitialProps=async(上下文)=>{
const{isServer,req,store}=context
常量cookie:string=isServer&&req?req.headers.cookie:null
const config={headers:{Cookie:Cookie}
等待axios.get('/api/user')。然后((res:any)=>{
console.log('Success!')
},(错误:任意)=>{
console.log('Failed',error.response.status)
重定向('/login',上下文)
})
}
render(){
返回(
)
}
}
返回AuthComponent
}
使用auth导出默认值
以下是正在记录的服务器请求:

[Sun Apr 19 15:57:59 2020] GET /api/user HTTP/1.1
Accept:       application/json
Connection:   close
Content-Type: application/json
Host:         localhost:8000
User-Agent:   axios/0.19.2
以下是客户端请求的外观:

[Sun Apr 19 15:57:34 2020] GET /api/user HTTP/1.1
Accept:          application/json
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection:      keep-alive
Cookie:          XSRF-TOKEN=eyJpdiI6IldZUW1IaENEa2JDZFQ5U3BqUXRhWnc9PSIsInZhbHVlIjoidWhENG5FYzBjVitEYzg1NjUvVVlPbU1KU1paV3d2R1lDYmpSQU5TbG1JOGtuTkRFd3B0V01xd1VHbXU4U2tTRCIsIm1hYyI6ImQ0NzM4MTYxMWY0MjgzY2RkYzI5NDljMTJlNzQ0ZWUyNmE2YTI5OTRlMzRlMDIyYjA4OTI4OGQwYjM5ZTMzYzEifQ%3D%3D; spotlight_session=eyJpdiI6ImdLazdFSlROZFkzL1VIUG8vZkFrVkE9PSIsInZhbHVlIjoiWjlWS1pJMTVzWXBpWjBRVDhlalNZVDZoSkZ4clJvZ3RmcTZQeDFYNHZZU1Npcmk1WnJqcFd0NjgrQ1N1bTQrRSIsIm1hYyI6ImY0M2YwZTc3MmY4ZDliMjIyMGFmNTk5ZGRlZTc2NmFjZmIzNDU0NDNhZGY0ZTEwNmY0ZGFmNGM1N2M4MjE4YTUifQ%3D%3D; bgniOJhLpfaYHyn0IBvs8K9RY31ERwwnrsTBMrVE=eyJpdiI6IlhWbTd2eW5FcmVKM0RvZ3dlMWl6V1E9PSIsInZhbHVlIjoibTNqeUMwRUdmTXpCWXRJM3lWaHdkaVR5TW9aL3ovNHZyOGQvMU9VYmhUbUlHUjZLOFN3eW1uVklXVWJPY0kzcDREUlZScVRWYUdhY0RVZWNrMWNER3d3L0JPMCt6SC9IeEJ3bEE4dkd1YitvY2l0dkhQRHVIUVM4eVNEem9jVVpvcUJGZ0dZWDBOVFFVZ1I2d1RjQlR4c2JiQSt1UFM1bUdHN0IrZWZ6MnUxWGNydXlaOE9VWGw3TE9BS0VGVU1wY1dUYWJoV1BPTjFNNzZlNytQUm9NTXNoL0dsVWhHZ2FTczlvVjBaOE1GM1E4OStoYkd2eWx0RFUvQTFJVjhFTTJRS1I3MkRHOENqSitiMlpoTDhoaStuek9GdVRPZ2Q0QzFEdi9jZ2JtMyszNHkwWE9zdUFBMXhBeUp4K0llSnE0Q1VtaGpDT0lnREE0ZzZuYS81V0RLWFE1SUFzRGdaN2I4MDdpb3NRT2VvYW9zaVA4MUg0TlI0NWRYN2pmZEhySWdGUXV4eDR1MkpZRC9BWS9HaVdtWklhaDJHWUFJYTRmMnlySEtQOWsrST0iLCJtYWMiOiI5ZGU1Yjg0ZjIzY2EyMjM1YWNkZWY4OTUwOGI0MDM1YWRkYzRhNTM0MWY5YzUzMzk2YTBkMGVlNWFmNGVmMDBmIn0%3D
Host:            localhost:8000
Origin:          http://localhost:3000
Referer:         http://localhost:3000/
Sec-Fetch-Dest:  empty
Sec-Fetch-Mode:  cors
Sec-Fetch-Site:  same-site
User-Agent:      Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36
X-Xsrf-Token:    eyJpdiI6IldZUW1IaENEa2JDZFQ5U3BqUXRhWnc9PSIsInZhbHVlIjoidWhENG5FYzBjVitEYzg1NjUvVVlPbU1KU1paV3d2R1lDYmpSQU5TbG1JOGtuTkRFd3B0V01xd1VHbXU4U2tTRCIsIm1hYyI6ImQ0NzM4MTYxMWY0MjgzY2RkYzI5NDljMTJlNzQ0ZWUyNmE2YTI5OTRlMzRlMDIyYjA4OTI4OGQwYjM5ZTMzYzEifQ==
Cookie: XSRF-TOKEN=F12pksvTI65uEAKfTMvsU5e9J9ADtXkewrqpBhOz; spotlight_session=bgniOJhLpfaYHyn0IBvs8K9RY31ERwwnrsTBMrVE; bgniOJhLpfaYHyn0IBvs8K9RY31ERwwnrsTBMrVE={"data":"a:4:{s:6:\"_token\";s:40:\"F12pksvTI65uEAKfTMvsU5e9J9ADtXkewrqpBhOz\";s:9:\"_previous\";a:1:{s:3:\"url\";s:36:\"http:\/\/localhost:8000\/api\/classrooms\";}s:6:\"_flash\";a:2:{s:3:\"old\";a:0:{}s:3:\"new\";a:0:{}}s:50:\"login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d\";i:1;}","expires":1587344232}

在服务器上,必须将cookie从客户端请求传递到axios请求。在服务器上,它位于
context.req.headers.cookie中,但在客户端上,您不需要这样做,因此请检查您是否在客户端上使用
if(process.browser)
解决了这个问题吗?