CS 공부를 진행하며 정리해두거나 새롭게 공부한 내용을 정리하여 업로드하려 합니다.
내용 형식은 줄글이 아니라 노트 정리와 같은 불릿 형식이므로 참고바랍니다.
HTTP는 인터넷에서 데이터를 주고받을 수 있는 프로토콜
- HTTP는 클라이언트의 요청과 응답이 있음
- 각 요청과 응답은 HTTP 메시지로 이루어짐
- HTTP 메시지는 시작줄, 헤더, 본문으로 이루어짐
- 요청 메시지
- 시작줄 : 메서드, 주소, HTTP 버전
- 헤더 : 요청에 관련된 정보를 담고 있음
- 본문 : 요청할 때 함께 보낼 데이터를 담음
- 응답 메시지
- 시작줄 : HTTP 버전, 상태코드, 상태 메시지
- 헤더 : 응답에 대한 정보를 담고 있음
- 본문 : 요청에 대한 응답 데이터를 담음
- HTTP 메서드(GET, POST, PUT, PATCH, DELETE 외)
- HEAD
- 요청에서 헤더만 가져올 때 사용
- OPTIONS
- 서버가 어떤 메서드를 지원하는지 알아볼 때 사용
- HEAD
- HTTP 헤더들
- 공통 헤더(요청, 응답에 모두 사용되는 헤더)
- Date
- 메시지의 생성 시각(자동 생성)
- Connection
- Connection: keep-alive
- Http/1.1에서 자동으로 지원
- Cache-Control
- 브라우저 내에 응답 데이터를 캐싱해두고 서버에 요청하지 않은 채, 캐싱된 데이터를 로드할 수 있음. 이에 대해 사용할 것인지 여부를 결정하는 헤더
- Cache-Control: no-store
- 아무것도 캐싱하지 않음
- Cache-Control: no-cache
- 모든 캐시를 쓰기전에 서버에 이 캐시를 써도 되는지 물어보라는 뜻
- Cache-Control: must-revalidate
- 만료된 캐시만 서버에 확인을 받도록 하는 것
- Content-Length
- 메시지의 본문 크기를 바이트 단위로 표시(자동 생성)
- Content-Type
- MIME, 문자열 인코딩을 명시
- Accept, Accept-Charset 헤더와 대응됨
- Content-Language
- 사용자의 언어를 뜻함(한국어, 일본어, 영어 등)
- Content-Encoding
- 컨텐츠 압축 방식
- 응답 컨텐츠를 gzip, deflate 등의 알고리즘으로 압축해서 보내면 브라우저가 알아서 해제해 사용
- 컨텐츠 용량이 줄어들기 때문에 압축하는게 필요함
- Date
- 요청 헤더
- Host
- 서버의 도메인 네임과 포트를 포함
- User-Agent
- 사용자가 어떤 OS, 브라우저를 사용해 요청했는지 나옴
- Accept
- 요청을 보낼 때 서버에 이런 타입(MIME)의 데이터를 보내줬으면 좋겠다고 이야기하는 것
- Accept: application/json, text/*
- Accept-Charset
- 요청을 보낼 때 서버에 이런 문자열 인코딩의 데이터를 보내주면 좋겠다고 이야기하는 것
- Accept-Charset: utf-8
- Accept-Language
- Accept-Encoding
- 모두 위처럼 희망하는 언어, 인코딩을 요청하는 것
- Authorization
- 인증 토큰을 서버로 보낼 때 사용하는 헤더
- API 요청을 보낼 때 토큰이 없으면 거절당할 수 있음 이 때 Authorization을 사용
- Origin
- POST같은 요청을 보낼 때 요청이 어느 주소에서 시작되었는지를 나타냄
- 요청을 보낸 주소와 받는 주소가 다르면 CORS 문제가 발생하기도 함
- Referer
- 이 페이지 이전의 페이지 주소가 담겨 있음
- 어떤 페이지에서 현재 페이지로 요청을 보내는지 알 수 있어서 분석에 사용됨
- Host
- 응답 헤더
- Access-Control-Allow-Origin
- 요청을 보내는 프론트 주소와 받는 백엔드 주소가 다르면 CORS에러가 발생함
- 이 때, 서버에서 응답 메시지 Access-Control-Allow-Origin 헤더에 프론트 주소를 적어야 에러가 나지 않음
- Allow
- 특정 메서드로만 요청을 허용하려는 경우 지원하지 않는 메서드로 요청했을 시 Allow 헤더에 지원하는 메서드를 달아줌
- Post를 지원하지 않고 Get을 지원하는데 Post로 요청 시
- Allow: GET
- Content-Disposition
- 응답 본문을 브라우저가 어떻게 표시해야 할 지 알려주는 헤더
- Content-Disposition: inline → 웹페이지 화면에 표시
- Content-Disposition: attachment; filename=’filename.csv’ → 다운로드
- Location
- 300번 대 (Redirect) 응답에서 어느 페이지로 이동할 지 알려주는 헤더
- Content-Security-Policy
- 외부 파일들을 불러올 때 차단할 소스와 불러올 소스를 명시
- Access-Control-Allow-Origin
- 공통 헤더(요청, 응답에 모두 사용되는 헤더)
참고
https://www.zerocho.com/category/HTTP/post/5b344f3af94472001b17f2da
https://www.zerocho.com/category/HTTP/post/5b344f3af94472001b17f2da
www.zerocho.com
'개인 공부' 카테고리의 다른 글
CS 공부 - 정규화 (0) | 2023.04.23 |
---|---|
CS 공부 - Spring (0) | 2023.03.31 |
WebMvcTest에서 MockMVC로 실패 테스트하기 (0) | 2023.03.04 |
당근마켓 클론코딩 - 게시글 검색 기능 구현을 위한 실험 (1) | 2023.02.08 |
정적 팩토리 메서드 (0) | 2022.11.21 |