2017-12-31 25 views
0

을 클라이언트로 사용하여 및 express-session을 설정하여 Express에게 요청을 보냅니다. 그러나 React가 Express 서버에 요청할 때마다 새로운 세션이 만들어집니다. 그래서 나는 수동으로 동일한 API URL에 수동으로 액세스하여 익스프레스 만 확인하고 페이지를 새로 고칠 때마다 동일한 세션을 계속 사용합니다.React가 Express로 보내기 요청을 할 때마다 새로운 세션이 생성됩니다.

프로젝트 구조 :

project-folder 
- client // React client with proxy set up 
     + src 
     + package.json 
     + ... 
- server.js 
- package.json 

server.js 내부 : 여기

const session = require('express-session'); 

let sessionConf = { 
    name: 'aoid', 
    secret: 'stackoverflow', 
    resave: true, 
    saveUninitialized: true, 
    rolling: true, 
    cookie: { 
     httpOnly: false, 
     secure: false, 
     maxAge: 2000000 
    } 
}; 

app.use(session(sessionConf)); 

app.get('/api/prod', (req, res, next) => { 
    let sessionId = req.sessionID; // is generated each time React client send request, works fine with api alone! 
    console.log(sessionId); 

    if (!sessionId) return res.status(401).send('Unauthorized Error'); 
    res.status(200).send({ data }); 
}); 

는 클라이언트가 표현하기 위해 요청을 보내 어떻게 반응이다 :

let loadItems = async() => { 
    const response = await fetch('/api/prod'); 
    const body = await response.json(); 

    if (response.status !== 200) throw Error(body.message); 
    return body; 
} 

나는 문제가 잘못에서 오는 생각 React와 Express 사이. 누구든지 전에이 문제가 있었나요?

+1

당신이 쿠키가 제대로 전송되고 있는지 확인 할 수 있습니까? – azium

+0

@azium 귀하의 질문에 동의하지 않았습니다. 하지만 물어 줘서 고마워, 그 시간에 내 문제는 :) 해피 뉴 이어! –

답변

2

fetch 기본적으로 cookie를 전송하지 않습니다, 당신은 명시 적으로 설정해야합니다

fetch(url, { 
    method: 'GET', 
    credentials: 'include', 
    // ... 
}) 
+0

지적 해 주셔서 고마워요 : D 정확히 작동하도록하기 위해서입니다. 새해 복 많이 받으세요 :) –

관련 문제