HTTP 구조

정미·2022년 11월 19일
0

Computer Science

목록 보기
79/81

Start Line

공통

  • 사용하는 프로토콜과 버전

요청

  • HTTP 메서드
  • 요청 url
  • GET / HTTP/1.1

응답

  • 상태 코드와 메세지
  • HTTP/1.1 200 OK

Header

공통

  • Date
    • 메세지가 생성된 날짜와 시각
  • Connection
    • Keep-Alive 설정
  • Content-Length
    • Content-Length: 32
  • Content-Type
    • 컨텐츠 종류를 지정하고, 텍스트일 경우 문자열 인코딩 방식 지정
    • Content-Type: text/html; charset=utf-9
    • +) application/json, image/gif, audio/midi, …
  • Content-Encoding
    • Content-Encoding: gzip
    • gzip, br, deflate 등의 알고리즘으로 압축해서 보낸다.
    • 요청과 응답 전송 속도가 빨라지고, 데이터 소모량도 줄어든다.
  • Cache-Control

요청 헤더

  • User-Agent
    • 브라우저, OS 정보
    • 접속자 및 사용기기 통계를 낸다.
  • Host
    • 서버의 domain name
    • 포트 정보도 포함할 수 있다.
  • Referer
    • 해당 요청 이전의 페이지 주소 지정
  • Accept
    • 클라이언트가 허용할 수 있는 파일 형식(MIME TYPE)
      • 클라이언트가 Accept로 원하는 형식을 보내면, 서버는 이를 바탕으로 헤더의 Content를 설정한다.
    • 예시
      • Accept: text/*, image/png, image/gif
      • Accept-Encoding: gzip, deflate
      • Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
  • Cookie
    • 웹 서버가 클라이언트에 쿠키를 저장해 놓았다면 해당 쿠키 정보를 key=value 쌍으로 서버에 전송한다.
    • Session ID
  • Origin
    • 요청이 어느 주소에서 시작되었는지
    • Origin: https://velog.io/@jummi10
    • 보낸 주소와 받는 주소가 다르면 CORS 문제가 발생하기도 한다.
  • If-Modified-Since
    • 페이지가 수정되었으면 최신 페이지 요청을 위해 존재한다.
    • 필드에 지정된 시간 이후로 변경이 없으면, 서버로부터 데이터를 전송받지 않는다.
    • Cache-Control 필드와 연관
  • Authorization
    • 인증 토큰 보낼 때 사용
    • JWT 인증에 주로 사용
    • Authorization: Bearer xxx.xxx.xxx

응답 헤더

  • Server
    • 웹 서버 정보
    • Server: Apache/2.2.24
  • Location
    • 201 created, 301, 302 redirection 상태에서 리다이렉트할 위치 정보 지정
  • Set-Cookie
    • 클라이언트에 저장할 쿠키 정보 지정
    • Expires(만료일), Secure(HTTPS에서만 사용할 것인지), Domain(같은 도메인에서만 사용 가능), HttpOnly(스크립트에서 접근 불가) 등 설정 가능
  • Expires
    • 리소스의 유효 일시 지정
  • Access-Control-Allow-Origin
    • 요청 Host와 응답 Host가 다르면 CORS 에러가 발생한다. 서버에서 해당 헤더에 프론트 주소를 적어주면 에러가 발생하지 않는다.
    • Access-Control-Allow-Origin: https://velog.io/@jummi10
  • Allow
    • Allow: GET
      • 이 경우 GET 요청만 받는다.
    • Allow: POST
      • 405 Method Not Allowed 를 반환한다.
  • Content-Disposition
    • 응답 본문을 브라우저가 어떻게 표시해야 할지 알려준다.
    • inline(웹페이지 화면에 표시), attachment(다운로드)
  • Content-Security-Policy
    • 외부 파일(image, js, css, 폰트, iframe 등)을 불러오는 경우, 차단할 소스와 불러올 소스를 명시한다.

Body

공통

  • 본문 데이터(메세지)
  • 빈 한 줄로 헤더와 바디를 구분한다

요청 바디

  • GET 메서드로 요청을 보내는 경우 바디는 생략한다.

응답 바디

  • HTML, CSS, Javascript, image 등

출처

0개의 댓글