티스토리 뷰
HTTP 메시지란?
HTTP 어플리케이션간 주고받은 데이터 블록들이다. 데이터 블록은 메시지의 내용(바디)과 의미를 설명하는 텍스트 메타정보(헤더)로 이루어져있다
용어정리
인바운드: 메시지가 클라이언트에서 서버 방향으로 이동하는 것
아웃바운드: 메시지가 서버에서 클라이언트로 이동하는 것
다운스트림: 현재 위치의 서버를 기준으로 데이터를 송신 또는 내보내는 흐름
업스트림: 현재 위치의 서버를 기준으로 데이터를 수신 또는 받아들이는 흐름
ex) 현재 서버가 클라이언트로 부터 데이터를 받으면 클라이언트에서 부터 메시지가 온 흐름은 업스트림이 된다.
현재 서버가 클라이언트로 데이터를 response 하게되면 그 흐름이 다운스트림이 된다.
모든 흐름은 다운스트림이 된다.
메소드 종류
HEAD
- 문서에 대한 헤더만 가져온다(리소스 없이 무엇인지 파악 가능하다)
- 헤더를 확인하여 리소스가 변경 되었는지 검사
- 응답의 상태코드를 통해 개체의 존재여부 확인
TRACE - 서버에 도달하는 과정을 추적한다
- TRACE의 경우 보안에 취약해 사용을 중지하는 추세다 (XST)
OPTIONS - 어떤 메소드를 수행 할 수 있는지 수행한다
HTTP 헤더
일반(공통)헤더: 요청, 응답 모두 나타날 수 있는 부가정보를 제공
Date Http 메시지 생성일자
Cache-Control 메시지와 함께 캐시지시자 전달
Content-Length 메시지의 본문크기를 바이트 단위로 표시
Content-Type 컨텐츠타입과 문자열 인코딩 명시
Content-Language 사용자의 언어 명시
Content-Encoding 컨텐츠 압축 방식 (ex gzip)
요청헤더: 요청에 대한 부가정보 제공
Host 요청의 대상이 되는 서버의 호스트 명과 포트를 제공
User-Agent 요청을 보낸 어플리케이션의 이름을 서버에게 말해준다
Accept 원하는 타입의 데이터를 보내달라고 요청할 때 사용한다.
Charset: 원하는 문자집합 요청
Encoding: 원하는 인코딩 요청
Language: 원하는 언어 요청
Authorization 인증 토큰을 보낼 때 해당 헤더에 담아서 전송한다. 앞에 토큰의 종류를 먼저 작성 한뒤에 토큰문자를 뒤에 적는다
ex) 토근의 종류 → bearer
Origin 요청이 어느 주소에서 시작 되었는가?
요청주소와 받는주소가 다를 경우 cors에러 발생 (브라우저 한정)
Referer 이전 페이지의 주소가 담겨있다.
응답헤더: 응답에 대한 부가정보 제공
Access-Control-Allow-Origin Cors 에러 방지를 위해 헤더에 프론트 주소를 적어주어야한다.
Allow 해당 entity에 대해 수행 될 수 있는 요청메소드를 나열한다.
허용하지 않는 메소드가 있을 경우 405 Method not allowed 에러로 응답한다.
Content-Disposition 응답 본문을 브라우저가 어떻게 표시해야 되는가를 나타낸다
ex) inline: 웹페이지 화면표시, attachment: 다운로드
Location 3xx나 201 응답일 때 어디로 이동할지를 알려준다
Content-Security-Policy 다른외부파일을 불러올 경우 차단할 소스와 불러올 소스를 명시한다.
- self: 자신의 도메인 파일만 가져올 수 있다.
- https: https를 통해서만 가져올 수있다.
- default-src 모든 외부소스에 대해 적용
src 종류에 대해서 다음을 참조해라. 매우 많은 종류가 존재한다
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
entity 헤더: 본문 크기와 콘텐츠, 리소스 그 자체
확장헤더: 명세에 정의되지 않은 헤더
HTTP 상태코드
100 continue
클라이언트가 서버로 보낸 요청에 문제가 없으니 다음 요청을 이어서 보내도 됨을 의미한다.
2xx 성공 상태코드
클라이언트의 요청에 성공한 경우
200 ok 요청 된 리소스를 성공적으로 반환
201 created 새로운 리소스를 성공적으로 생성, location 헤더를 통해 해당 리소스를 참조할 수 있게 할 수 있다.
204 no content 200과 동일하지만 다른점으로는 본문을 포함하지 않는다
206 partial content 부분적인 요청에 성공한 경우
3xx 리다이렉션 상태코드
클라이언트가 관심있어 하는 리소스에 대해 다른 위치를 사용하라고 말해주거나 대안을 제공한다.
301 moved permanently 영구적으로 리소스에 대한 주소가 변경 되었을 경우
location에 현재 리소스의 위치를 담아서 보내준다.
302 found 임시적으로 주소가 변경 되었을 때 사용한다
301과 비슷하지만 location의 리소스 위치는 임시적으로 사용되어야한다.
로그인 후 메인페이지로 이동시킬 때 사용이 되기도 한다
304 not modified 최근에 요청한 결과와 다르지 않을 경우 사용
307 temporary redirect 임시로 페이지를 리다이렉트 한다.
4xx 클라이언트 에러상태 코드
서버가 다룰 수 없는 것을 클라이언트가 요청한 경우
400 bad request 클라이언트가 잘 못된 요청을 했을 경우
401 unauthorized 리소스 얻기전 클라이언트에게 인증요청 (ex 로그인 요청)
403 forbidden 리소스 요청 거부 (접근권한이 없음)
404 not found 리소스를 찾을 수 없음
403 대신에 404를 요청하는 경우도 많다
405 method not allowed 요청한 메소드가 존재하지 않을 경우
408 request timeout 요청 시간 초과
409 conflict 요청을 처리하는 과정에서 충돌이 발생하였다
ex. 이미 회원가입 된 유저인 경우
410 gone 404와 비슷하지만 이전에는 있었지만 현재에는 존재하지 않는 경우 사용한다.
5xx 서버에러 상태코드
클라이언트가 올바른 요청을 보내주었음에도 서버 내부에서 에러가 발생하는 경우
500 internal server error 서버에서 요청을 처리할 수 없는 에러인 경우
501 not implemented 서버에서 아직 해당 요청을 처리할 수 없는 경우
502 bad gateway 게이트웨이나 프락시로부터 가짜응답을 받는 경우
서버로 가는 요청이 중간에 유실 되는 경우
503 service unavailable 유지보수 중이거나 서버가 터질 경우
원래는 되는 기능이나 현재는 처리 할 수 없는 경우 또는 나중에 처리가 가능한 경우
504 gateway timeout 서버 게이트웨이 요청시간 초과 408과 비슷하지만 서버내부에서 다른 서버에 요청하다가 요청시간이 초과 된 경우
505 http version not supported http 버전이 달라 지원이 안되는 경우
reference
http 완벽가이드
필수 헤더 관련
'네트워크' 카테고리의 다른 글
주소창에 주소를 입력하면 일어나는 일 (0) | 2023.03.09 |
---|---|
[http 완벽가이드] URL과 리소스 (0) | 2023.03.09 |
HTTP 개관 (0) | 2023.03.09 |
- Total
- Today
- Yesterday
- 자바스크립트
- useCallback과 useMemo 사용
- suspense 장점
- 관심사 분리하기
- node 버전 마이그레이션
- 불량 사용자 자바스크립트
- storybook react is not defiend 해결
- React useCallback
- React useMemo
- serverless 배포
- nextjs 에러핸들링
- storybook scss import
- serverless nestjs
- 1600 파이썬
- react suspense
- 선언적 UI
- 표현 가능한 이진트리
- node version yarn berry
- nextjs errorboundary
- javascript
- 서비스 디자인 패턴
- 미로탈출 명령어
- 에러핸들링
- nestjs 배포하기
- 서버사이드 error handling
- 백준 22862
- storybook scss이슈
- CSS
- 백준 1600번
- 가장 긴 짝수 연속한 부분 수열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |