Comments (3)
1. 401 VS 403은 언제 사용해야 적절할까?
401은 인증이 안 되어있을 때, 403은 권한이 없을 때 일어나는 에러코드입니다.
제가 두 코드를 사용할 땐 다음과 같은 상황에서 사용을 해요.
-
401: 일반적으로 모든 권한의 유저가 다할 수 있는 작업이지만 인증(authenticated)되어 있지 않으면 할 수 없는 작업에서 사용.
- ex: 게시글 작성, 댓글 작성 등
-
403: 해당 요청을 수행하기 위한 적절한 권한을 부여받지 못 한 경우 사용합니다.
- ex: 다른 유저의 게시글 삭제, 수정
- ex: 일반 유저의 어드민 api 요청 등등..
-
403이 내포하고 있는 의미를 풀어보면
요청을 처리하기 위한 자원이 존재하지만 권한이 없어 처리하지 못한다
입니다. 자원의 존재 여부는 확인이 된 거에요. 이건 취약점을 파고드려하는 공격자에게 힌트가 될 수 있어서요, 자원의 존재 여부를 숨기려고 404를 쓰는 경우도 있다고 합니다. 이렇게 가져가려면 팀 간 합의가 잘 되어야할 것 같아요. 아예 이런 경우 커스텀 상태 코드를 쓰는 것도 좋아보이네요.
충분히 401과 403 두 개가 헷갈릴 수 있다고 생각해요. 사실 401도 403으로 해석할 여지가 충분히 있으니까요. 로그인 된 일반 유저의 권한이 없다고 생각하면 401이 일어나는 상황도 충분히 403이라고 할 수 있을 것 같습니다. 그러나 이렇게 하면 클라이언트 입장에서 다음 행동을 설계할 때 헷갈릴 수 있을 것 같아요.
401이 일어났을 때의 다음 행동과 403이 일어났을 때의 다음 행동은 확실하게 다릅니다. 401이 일어났을 때는 로그인으로 리다이렉트 시켜줘야할 것이고 403이 일어났을 때는 그런 것 없이 경고문을 보여줘야할 것입니다. 그러나 모든 상황에서 403을 보내버리면 이를 핸들링해야할 클라이언트가 헷갈릴수도 있겠죠. 명확한 구분을 위해서는 저 401, 403 두 가지 상황을 확실하게 나누는 것이 맞다고 생각합니다.
2. 502 Bad Gateway는 정확히 언제 발생할까
- MDN의 정의를 빌려서 이야기하자면, 502는 서버가 게이트웨이나 프록시 서버 역할을 하면서 업스트림 서버로부터 유효하지 않은 응답을 받을 경우 발생하는 코드입니다.
- 대체로 리버스 프록시 역할을 해주는 nginx에서 많이 볼 수 있습니다. 관련 플러그인 설정을 잘못해서 요청을 제대로 처리할 수 없는 상황이거나 접속량이 너무 많이 일어나 감당하기 힘들 때 일어난다고 합니다.
- 개인적인 경험으로는 전자의 경우가 더 많았던 것 같은데, 회사가 운영하는 서버의 경우 후자의 경우가 더 많을 것 같아요.
- https://devocean.sk.com/blog/techBoardDetail.do?ID=165428
- 관련해서 알아보다가 재밌는 글을 봤어요. 이런 경우도 있을 수 있구나 하면서 보면 재밌을 것 같아요.
from my_study.
공유해주신 이슈도 흥미로운 내용이내요 WAS서버와 프록시 서버 간의 커넥션 유효 시간이 달라서 502가 올 수 있다는 건 저도 첨 알았어요 ㅋㅋ
from my_study.
정리 잘해주신 것 같가요 요약하자면.
401: 유저를 인식할 수 없는 경우 로그인 에러 혹은 아예 로그인 자체가 안된 경우
403: 유저를 인식할 수 있으나 유저가 해당 작업을 위힌 권한이 부족한 경우 (타인 글 삭제)
from my_study.
Related Issues (2)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from my_study.