• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

도메인 연결 후 401 (Unauthorized) 에러가 발생합니다

20.12.18 21:51 작성 조회수 1.74k

0

도메인 연결하니 로그인 후 새로고침을 해도 쿠키값이 저장되는데

게시글을 작성하면 http://api.ymillonga.xyz/post 401 (Unauthorized) 에러가 납니다

쿠키 문제라고 짐작하고 있는데 

프론트 서버에서 withCredentials= true 설정되었고

백 서버에서 cors에 credentials:true 로 되어있는 것 확인했습니다

제가 뭘 놓치고 있는 걸까요? 

(이렇게 빨리 다시 질문을 하게 될 줄 몰랐습니다 흑흑)

back/app.js

const prod = process.env.NODE_ENV === 'production';
const frontUrl = prod ? "http://ymillonga.xyz" : "http://localhost:3050";
db.sequelize.sync()
    .then(() => {
        console.log('db연결 성공');
    })
    .catch(console.error);
app.use(morgan('dev'));

if (prod) {
    // app.enable('trust proxy');
    app.use(morgan('combined'));
    app.use(hpp());
    app.use(helmet({ contentSecurityPolicy: false }));
    app.use(cors({
        origin: frontUrl,
        credentials: true,
    }))
else {
    app.use(morgan('dev'));
    app.use(cors({
        origin: true,
        credentials: true,
    }));
}

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.use('/'express.static(path.join(__dirname'uploads')));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(session({
    saveUninitialized: false,
    resave: false,
    secret: process.env.COOKIE_SECRET,
    // proxy: prod,
    cookie: {
        httpOnly: true,
        secure: false,
        // process.env.NODE_ENV === 'production',//https일 때 true
        domain: process.env.NODE_ENV === 'production' && '.ymillonga.xyz'
    },
}));
app.use(passport.initialize());
app.use(passport.session());

front/config/config.js

export const callbackUrl = process.env.NODE_ENV === 'production' ?
 "http://api.ymillonga.xyz/user/google/callback" : "http://localhost:3051/user/google/callback";
export const backUrl = process.env.NODE_ENV === 'production' ?
 "http://api.ymillonga.xyz" : "http://localhost:3051";
export const frontUrl = process.env.NODE_ENV === 'production' ?
 "http://ymillonga.xyz" : "http://localhost:3050";

front/saga/index.js

import { allfork } from 'redux-saga/effects';

import userSaga from './user';
import postSaga from './post';
import { backUrl } from '../config/config';
import axios from 'axios';

axios.defaults.baseURL = backUrl;
axios.defaults.withCredentials = true;
export default function* rootSaga() {
    yield all([
        fork(userSaga),
        fork(postSaga),
    ]);
}

답변 2

·

답변을 작성해보세요.

2

지금 스크린샷을 보니 로그인할 때 쿠키와 게시글 작성할 때 쿠키가 다르네요. 혹시 어떤 때 달라지는 지 한 번 보시겠어요? Application 탭의 쿠키도 같이 보시는 게 좋습니다.

0

maliethy님의 프로필

maliethy

질문자

2020.12.18

이유는 모르겠는데 시간이 어느 정도 흐른 후 브라우저 창을 닫고 다시 페이지를 들어가서 시도해보니 쿠키값이 변하지 않으면서 백서버에 요청이 잘 넘어갑니다!

제가 로그아웃 요청이 안넘어가서 application탭에서 cookie.sid값을 강제로 삭제한 후 다른 아이디로 로그인했는데 그것때문이었을까요?

제로초님 덕분에 무사히 배포하기까지 왔네요

감사합니다~