-
카테고리
-
세부 분야
풀스택
-
해결 여부
해결됨
도메인 연결 후 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 { all, fork } 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
조현영
지식공유자2020.12.18
지금 스크린샷을 보니 로그인할 때 쿠키와 게시글 작성할 때 쿠키가 다르네요. 혹시 어떤 때 달라지는 지 한 번 보시겠어요? Application 탭의 쿠키도 같이 보시는 게 좋습니다.
0
maliethy
질문자2020.12.18
이유는 모르겠는데 시간이 어느 정도 흐른 후 브라우저 창을 닫고 다시 페이지를 들어가서 시도해보니 쿠키값이 변하지 않으면서 백서버에 요청이 잘 넘어갑니다!
제가 로그아웃 요청이 안넘어가서 application탭에서 cookie.sid값을 강제로 삭제한 후 다른 아이디로 로그인했는데 그것때문이었을까요?
제로초님 덕분에 무사히 배포하기까지 왔네요
감사합니다~
답변 2