HTTP 요청

uglyduck.dev·2020년 9월 27일
0

개념 모아 🗂

목록 보기
17/40

서버에게 보낸 HTTP 요청 내용

웹 브라우저는 요청 데이터의 라인을 구분하기 위해 각 문자열의 끝에 개행 문자를 붙여 웹 서버에 보냅니다.

  • www.daum.net의 HTTP 요청 정보의 일부분 
01  GET / HTTP/1.1
02  Host: www.daum.net
03  Cache-Control: max-age=0
04  Accept: text/html, application/xhtml+xml,application/xml;q=0.9,image/webp, */*;q=0.8
05  User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
06  Accept-Encoding: gzip,deflate,sdch
07  Accept-Language: ki-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4

요청 라인(Request-Line)

  • 요청메시지의 첫번째 라인의 구성 요소
    • 메서드
    • 요청하는 자원
    • 프로토콜 버전

HTTP 요청의 Request-Line 형식

구분내용
메서드요청하는 자원에 대해 웹 서버에게 내리는 명령
GET, POST, HEAD, PUT, DELETE, TRACE, CONNECT, OPTIONS...
요청 URI요청하는 자원의 식별자 HTML이나 이미지, 동영상, 애플리케이션 등의 가상의 경로
HTTP 버전요청 정보가 어떤 버전에 맞추어 작성했는지의 정보

GET 요청

  • URL에 데이터를 포함 -> 데이터 조회에 적합 
  • 바이너리 및 대용량 데이터 전송 불가
  • 요청라인과 헤드 필드의 최대크기
    • HTTP 사양에는 제한사항 없음
    • 대용량 URL로 인한 문제 발생 -> 웹 서버에 따라 최대 크기 제한
    • Microsoft IIS6.0+: 16KB
    • Apache 웹 서버: 8KB

POST 요청

  • URL에 데이터가 포함되지 않음 -> 외부 노출 방지
  • 메시지 본문에 데이터 포함 -> 실행 결과 공유 불가
  • 바이너리 및 대용량 데이터 전송 가능

요청 헤더

  • 서버가 요청을 처리할 때 참고하라고 클라이언트에서 웹 서버에게 알려주는 정보

HTTP 요청의 헤더 정보 형식

헤더헤더명
일반 헤더
(General Header Fields)
Cache-Control
Connection
Date
Pragma
Trailer
Tranfer-Encoding
Upgrade
Via
Warning
요청 헤더
(Request Header Fields)
Accept
Accept-Charset
Accept-Encoding
Accept-Language
Authorization
Expect
From
Host
If-Match
If-Modified-Since
If-None-Match
If-Unmodified-Since
Max-Forwards
Proxy-Authorization
Range
Referer
TE
User-Agent
응답 헤더
(Response Header Fields)
Accept-Ranges
Age
ETag
Location
Proxy-Authenticate
Retry-After
Server
Vary
WWW-Authenticate
본문 헤더
(Entity Header Fields)
Allow
Content-Encoding
Content-Language
Content-Location
Contnet-MD5
Content-Range
Content-Type
Expires
Last-Modified
기타 확장 헤더
  • User-Agent: 클라이언트의 정보를 서버에게 알려줌. 웹 서버는 이 헤더를 분석하여 요청자의 OS와 브라우저를 구분

공백 라인과 요청 데이터(message-body)

  • HTTP 요청 내용 중 가장 마지막 라인 즉, 헤더의 끝은 공백 라인으로 채워진다.
  • 웹 브라우저의 주소창에 URL을 입력하거나 웹 페이지에 링크르 클릭하는 경우 -> GET 요청: 끝 줄 공백 라인
  • 로그인, 게시글 등록하는 경우 -> POST 요청: 공백 라인 다음에 서버에 보낼 데이터(message-body)가 옴

Reference

  • 엄진영, 『자바 웹 개발 워크북』, 프리렉(2018.8.9), 70~73p
profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글