Отсутствует информация о запросе в Next JS getInitialProps - PullRequest
0 голосов
/ 20 апреля 2020

Я делаю компонент аутентификации более высокого порядка для моего приложения, который отправляет запрос GET в мой API, а затем перенаправляет пользователя, если ответ не HTTP 200. API использует куки для аутентификации пользователя, а HO C отлично работает на клиенте. Однако, когда я делаю свой запрос API на сервере, я каждый раз получаю ответ HTTP 401.

Я зарегистрировал ответ на API как для ответа сервера, так и для клиента, и заметил, что запрос сервера только имеет несколько заголовков запроса, тогда как клиентский запрос имеет гораздо больше, включая заголовок cook ie и заголовок токена XSRF. В чем может быть причина того, что запрос на сервере отправляет так мало заголовков?

Вот мой код HO C:

import React from 'react'
import redirect from '../utils/redirect'

const withAuth = <T extends Object>(C: React.ComponentType<T>) => {
    class AuthComponent extends React.Component<T> {
        static getInitialProps = async (context) => {
            const { isServer, req, store } = context
            const cookie: string = isServer && req ? req.headers.cookie : null
            const config = { headers: { Cookie: cookie } }

            await axios.get('/api/user').then((res: any) => {
                console.log('Success!')
            }, (error: any) => {
                console.log('Failed.', error.response.status)
                redirect('/login', context)
            })
        }

        render() {
            return (
                <C {...this.props} />
            )
        }
    }
    return AuthComponent
}

export default withAuth

Вот сервер запрос регистрируется:

[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}
...