2016-09-09 11 views
0

React-Redux를 사용하여 다른 도메인의 nodejs에있는 API에 요청하는 Webapp를 개발 중입니다.쿠키가 세션에 추가되지 않았습니다.

사용자에게 로그인하려면 사용자 인증 정보를 내 API로 보내면 API가 유효성을 검사하고 JWT로 다시 전송됩니다. 나는 ExpressJS를 사용하여이 작업을 수행하기 위해 노력하고있어, 내 API에 로그인 경로 그래서 내가 가진 :

res.cookie("my_token", token); 

문제는 쿠키가 세션에 추가되지 않는 것입니다. Mozilla를 사용하면 Set-Cookie 속성이 올바른 쿠키가있는 머리글에 있음을 알 수 있지만 내 리소스에는 표시되지 않습니다.

또한 DHC를 사용하여 몇 가지 테스트를했는데 DHC를 사용하면 쿠키가 세션 쿠키에 성공적으로 저장됩니다.

나는 모두 내 웹 사이트 및 API에

res.header("Access-Control-Allow-Origin", "*"); 
res.header("Access-Control-Allow-Credentials", true); 
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 

있습니다. 웹 사이트에서 나는 반응 모듈 axios를 사용하여 요청을하고 있습니다. API에서 쿠키를 처리하기 위해 쿠키 파서를 사용하고 있습니다.

res.cookie("session_token", token, { domain: ".mydomain.com" }).send(response); 
+0

어떤 세션 관리 미들웨어를 사용하고 있습니까? 더 많은 코드를 보여줄 수 있습니까? – David

답변

2

내가 각도 코드와 비슷한 문제를 가지고 : 이것은 내 응답이

axios.post(`${ROOT_URL}/login`, creds) 
    .then(res => { /*...*/ }) 
    .catch(err => { /*...*/ }); 

입니다 :

app.use(function(req, res, next) { 
     res.header("Access-Control-Allow-Origin", "*"); 
     res.header("Access-Control-Allow-Credentials", true); 
     res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
     next(); 
    }); 

    const cookieParser = require("cookie-parser"); 
    app.use(cookieParser()); 

    const bodyParser = require("body-parser"); 
    app.use(bodyParser.json({limit: '50mb'})); 
    app.use(bodyParser.urlencoded({limit: '50mb', extended: true})); 

    const morgan = require("morgan"); 
    app.use(morgan('dev')); 

이 내 요청입니다 :이 내 미들웨어 (API 및 응용 프로그램 모두)입니다 , 내가 해결해 준 것

  • 클라이언트에서 당신이이 호스트를하지 반환해야하기 때문에 백엔드 res.header("Access-Control-Allow-Origin", "*");에서 그것을
  • 을 가능하게하는 몇 가지 옵션이 있어야합니다 withCredentials 나는 일이 Axios의 수 있도록 필요한 것은 당신이

    res.header("Access-Control-Allow-Origin", req.header('Origin')); 
    

    같은 뭔가를 할 수

것만으로는 충분하지 않습니다 별표, 이것은 개발 목적으로 만 사용됩니다. 나중에 이것을 정적 URL로 변경하는 것이 좋습니다

관련 문제