HTTP Header
- HTTP body에 대한 정보를 말해준다.
- 해당 메시지가 제공하는 기능에 대한 최소한의 정보가 정리된 요약본
- 헤더에 불필요한 내용을 담으면 속도가 저하되기 때문에 꼭 필요한 내용만 담고 모든 기능을 표현해야 함.
Header의 구성
1) General Header
- 컨텐츠 정보 < 요청/응답에 대한 일반적인 정보 (날짜 및 시간 등)
- Date : 현재시간 (Sat, 23 Mat 2019 GMT)
- Pragma : 캐시제어 (no-cache), HTTP/1.0에서 쓰던 것으로 HTTP/1.1에서는 Cache-Control이 쓰인다.
- Cache-Control : 캐시 제어
- + no-cache : 모든 캐시를 쓰기 전에 서버에 해당 캐시를 사용해도 되는지 확인하겠다.
- + public : 공유 캐시에 저장해도 된다.+ max-age : 캐시의 유효시간을 명시하겠다.
- + private : '브라우저' 같은 특정 사용자 환경에만 저장하겠다.
- + must-revalidate : 만료된 캐시만 서버에 확인하겠다.
- + no-store : 캐시를 저장하지 않겠다.
- Transfer-Encoding : body 내용 자체 압축 방식 지정본문에 데이터 길이가 나와서 야금야금 브라우저가 해석해서 화면에 뿌려줄 때 이 기능을 사용한다.
- 'chunked'면 본문의 내용이 동적으로 생성되어 길이를 모르기 때문에 나눠서 보낸다는 의미다.
- Upgrade : 프로토콜 변경시 사용 ex) HTTP/2.0
- Via : 중계(프록시)서버의 이름, 버전, 호스트명
- Content-Encoding : 본문의 리소스 압축 방식 (transfer-encoding은 body 자체이므로 다름)
- Content-type : 본문의 미디어 타입(MIME) ex) application/json, text/html
- Content-Length : 본문의 길이
- Content-language : 본문을 이해하는데 가장 적절한 언어 ex) ko
- 한국사이트여도 본문을 이해하는데 영어가 제일 적절하면 영어로 지정된다.
- Expires : 자원의 만료 일자
- Allow : 사용이 가능한 HTTP 메소드 방식 ex) GET, HEAD, POST
- Last-Modified : 최근에 수정된 날짜
- ETag : 캐시 업데이트 정보를 위한 임의의 식별 숫자
- Connection : 클라이언트와 서버의 연결 방식 설정 HTTP/1.1은 kepp-alive 로 연결 유지하는게 디폴트
+ Content-type
MIME : Multipurpose Internet Mail Extensions, 문서 및 파일, 바이트 분류의 특성과 형식을 나타냄. IETF에서 정의 및 표준화.
개별 유형 : application (명시적으로 다른 유형 중 하나에 속하지 않는 모든 종류의 이진 데이터, 어떤 방식으로든 실행되거나 해석될 데이터 또는 특정 응용 프로그램이나 사용할 응용 프로그램 범주가 필요한 이진 데이터. audio, example(자리 표시자), font, image, mode1 (3D 개체 또는 장면에 대한 모델 데이터), text, video)
2) Request/ Response Header
- Request header form
- Request Line : 어떤 웹서버로 접속(Host 부분)해서, 어떠한 방식(HTTP/1.1)으로, 어떠한 메소드(GET)를 통해 무엇을(/doc/test/.html) 요청했는지에 대한 메시지가 담겨있다.
- Host : 요청하려는 서버 호스트 이름과 포트번호
- User-agent : 클라이언트 프로그램 정보 ex) Mozilla/4.0, Windows NT5.1
- 이 정보를 통해서 서버는 클라이언트 프로그램(브라우저)에 맞는 최적의 데이터를 보내줄 수 있다.
- Referer : 바로 직전에 머물렀던 웹 링크 주소(해당 요청을 할 수 있게된 페이지)
- Accept : 클라이언트가 처리 가능한 미디어 타입 종류 나열 ex) */* - 모든 타입 처리 가능, application/json - json데이터 처리 가능.
- Accept-charset : 클라이언트가 지원가능한 문자열 인코딩 방식
- Accept-language : 클라이언트가 지원가능한 언어 나열
- Accept-encoding : 클라이언트가 해석가능한 압축 방식 지정 ex) gzip, deflate
- 압축이 되어있다면 content-length와 content-encoding으로 압축을 해제한다.
- Content-location : 해당 개체의 실제 위치
- Content-disposition : 응답 메세지를 브라우저가 어떻게 처리할지 알려줌. ex) inline, attachment; filename='jeong-pro.xlsx'
- Content-Security-Policy : 다른 외부 파일을 불러오는 경우 차단할 리소스와 불러올 리소스 명시ex) default-src 'self' -> 자기 도메인에서만 가져옴
- ex) default-src 'none' -> 외부파일은 가져올 수 없음
- ex) default-src https -> https로만 파일을 가져옴
- If-Modified-Since : 여기에 쓰여진 시간 이후로 변경된 리소스 취득. 페이지가 수정되었으면 최신 페이지로 교체하기 위해 사용된다.
- Authorization : 인증 토큰을 서버로 보낼 때 쓰이는 헤더
- Origin : 서버로 Post 요청을 보낼 때 요청이 어느 주소에서 시작되었는지 나타내는 값
- 이 값으로 요청을 보낸 주소와 받는 주소가 다르면 CORS 에러가 난다.
- Cookie : 쿠기 값 key-value로 표현된다. ex) attr1=value1; attr2=value2
3) Response Header
- 웹브라우저에 응답하는 콘텐츠
- Response header form
웹브라우저가 요청한 메시지에 대해서 status 즉 성공했는지 여부(202, 400 등), 메시지, 그리고 요청한 응답 값들이 body에 담겨있다.
- Location : 301, 302 상태코드일 떄만 볼 수 있는 헤더로 서버의 응답이 다른 곳에 있다고 알려주면서 해당 위치(URI)를 지정한다.
- Server : 웹서버의 종류 ex) nginx
- Age : max-age 시간내에서 얼마나 흘렀는지 초 단위로 알려주는 값
- Referrer-policy : 서버 referrer 정책을 알려주는 값 ex) origin, no-referrer, unsafe-url
- WWW-Authenticate : 사용자 인증이 필요한 자원을 요구할 시, 서버가 제공하는 인증 방식
- Proxy-Authenticate : 요청한 서버가 프록시 서버인 경우 유저 인증을 위한 값
Content-Type
1) Multipart Related MIME 타입
- Content-Type: Multipart/related <-- 기본형태
- Content-Type: Application/X-FixedRecord
2) XML Media의 타입
- Content-Type: text/xml
- Content-Type: Application/xml
- Content-Type: Application/xml-external-parsed-entity
- Content-Type: Application/xml-dtd
- Content-Type: Application/mathtml+xml
- Content-Type: Application/xslt+xml
3) Application의 타입
- Content-Type: Application/EDI-X12 <-- Defined in RFC 1767
- Content-Type: Application/EDIFACT <-- Defined in RFC 1767
- Content-Type: Application/javascript <-- Defined in RFC 4329
- Content-Type: Application/octet-stream : <-- 디폴트 미디어 타입은 운영체제 종종 실행파일, 다운로드를 의미
- Content-Type: Application/ogg <-- Defined in RFC 3534
- Content-Type: Application/x-shockwave-flash <-- Adobe Flash files
- Content-Type: Application/json <-- JavaScript Object Notation JSON; Defined in RFC 4627
- Content-Type: Application/x-www-form-urlencode <-- HTML Form 형태
* x-www-form-urlencode와 multipart/form-data은 둘다 폼 형태이지만 x-www-form-urlencode은 대용량 바이너리 테이터를 전송하기에 비능률적이기 때문에 대부분 첨부파일은 multipart/form-data를 사용하게 된다.
4) 오디오 타입
- Content-Type: audio/mpeg <-- MP3 or other MPEG audio
- Content-Type: audio/x-ms-wma <-- Windows Media Audio;
- Content-Type: audio/vnd.rn-realaudio <-- RealAudio; 등등
5) Multipart 타입
- Content-Type: multipart/mixed: MIME E-mail;
- Content-Type: multipart/alternative: MIME E-mail;
- Content-Type: multipart/related: MIME E-mail <-- Defined in RFC 2387 and used by MHTML(HTML mail)
- Content-Type: multipart/formed-data <-- 파일 첨부
6) TEXT 타입
- Content-Type: text/css
- Content-Type: text/html
- Content-Type: text/javascript
- Content-Type: text/plain
- Content-Type: text/xml
7) file 타입
- Content-Type: application/msword <-- doc
- Content-Type: application/pdf <-- pdf
- Content-Type: application/vnd.ms-excel <-- xls
- Content-Type: application/x-javascript <-- js
- Content-Type: application/zip <-- zip
- Content-Type: image/jpeg <-- jpeg, jpg, jpe
- Content-Type: text/css <-- css
- Content-Type: text/html <-- html, htm
- Content-Type: text/plain <-- txt
- Content-Type: text/xml <-- xml
- Content-Type: text/xsl <-- xsl
https://hazel-developer.tistory.com/145
HTTP의 구조에 대해 이해하기(특히 Header 구조 파악하기)
HTTP 구조 HTTP 헤더와 본문으로 구성되어 있다. HTTP 본문에는 실제로 통신과정에서 주고 받을 컨텐츠가 담겨져 있다. HTTP헤더는 HTTP메시지(요청/응답)와 본문에 대한 정보를 말해주고 있다. 이에
hazel-developer.tistory.com
https://yunzema.tistory.com/186
[개념 정리] http content-type 관한 정리
http 통신으로 api와 연동 혹은 api를 구현할 때, 보편적으로 자주 쓰는 Content-Type, Mime-Type이 있지만, 종류에 대해 한번 정리할 필요가 있어 일단 종류와 개념에 대한 내용 정리한다. content-type이란
yunzema.tistory.com
상태 코드
1xx : information
- 100 : Continue : 일부 요청 받음, 나머지 정보 계속 요청
2xx : Success
- 200 : OK : 요청이 성공적으로 수행
- 201 : Created : PUT 메소드에 의해 원격지 서버에 파일 생성
- 202 : Accepted : 웹 서버가 명령 수신
3xx : Redirection
- 301 : Moved Permanently : 자원 위치가 영구적으로 변경, 변경 URL 전달
- 302 : Found : 자원 위치 임시 변경, 변경 URL 전달
- 304 : Not Modified : 변경 안되었다. 클라이언트 로컬 캐시 자원 이용하라는 의미
4xx : Client Error
- 400 : Bad Request : 요청 메시지 문법 오류
- 401 : Unauthorized : 요청한 자원에 대한 권한 없음
- 403 : Forbidden : 접근 차단
- 404 : Not Found : 자원 없음
5xx : Server Error
- 500 : Internal Server Error : 내부 서버 오류
'개념정리 > WEB Hacking 개념 정리' 카테고리의 다른 글
역직렬화 취약점 (0) | 2022.03.06 |
---|---|
XSS 구분 & 공격 구문 (0) | 2022.03.02 |
직렬화 & 역직렬화 취약점 (0) | 2022.02.23 |
JWT 개념 정리 (0) | 2022.02.11 |