네트워크

HTTP 웹 기본 지식 - HTTP 헤더(일반 헤더)

SICDev 2021. 9. 16. 21:29
반응형

HTTP 헤더❓

HTTP 헤더에는 HTTP 전송에 필요한 모든 부가정보들이 들어가있다👍

메시지 바디의 내용, 타입과 크기, 요청 클라이언트 정보, 서버의 정보 등 엄청나게 많은 정보들이 들어가 있다.


HTTP 표준 변경❓

2014년 HTTP 표준이 변경되면서 기존의 엔티티라는 용어는 사라지고 표현(Representation)으로 용어가 변경된다💡

  • 엔티티 헤더 -> 표현 헤더, 엔티티 바디 -> 표현 데이터
  • 메시지 본문 = 페이로드(payload)

표현 헤더❓

표현 데이터의 메타 데이터 정보들이 들어가있다💡

표현 헤더는 전송과 응답 모두 사용할 수 있다❗

  • Content-Type - 표현 데이터의 형식을 의미한다.
    ex) text/html; charset=UTF-8 , application/json 등..

  • Content-Encoding - 표현 데이터의 압축 방식을 의미한다.
    ex) gzip, deflate 등..

  • Content-Language - 표현 데이터의 자연 언어를 의미한다.
    ex) ko, en, en-US 등..

  • Content-Length - 표현 데이터의 길이를 의미한다.

협상 헤더❓

클라이언트가 선호하는 표현의 요청 정보가 들어가있다.💡

협상 헤더는 요청시에만 사용된다❗

  • Accept - 클라이언트가 선호하는 미디어 타입

  • Accept-Charset - 클라이언트가 선호하는 문자 인코딩

  • Accept-Encoding - 클라이언트가 선호하는 압축 인코딩

  • Accept-Language - 클라이언트가 선호하는 자연 언어

각각의 요청에 우선순위를 정하여 보내면 서버는 그 우선순위에 맞춰 데이터를 응답해준다❗


전송 방식 헤더❓

클라이언트에게 전달할 때 어떤 방식으로 전달 할것인지 들어가 있는 헤더들이다❗

  • 단순 전송 - 진짜 단순하게 요청에 대한 응답을 한번에 다 내려주는 것
    표현 데이터에 들어가는 데이터의 길이를 Content-Length로 지정해서 응답해주는 것이다😵

  • 압축 전송 - 표현 데이터를 gzip같은 걸로 압축하고 보내는 것
    표현 데이터를 어떤 방식으로 압축했는지 Content-Encoding에 압축방식을 넣어서 전달한다👍

  • 분할 전송 - 표현 데이터를 chunked 덩어리로 쪼개서 보내는 것
    표현 데이터를 보낼 때 여러 덩어리로 나누어서 보낼때 Transfer-Encoding: chunked를 추가해 전달한다😎
    Transfer-Encoding을 사용할때는 Content-Length를 사용하면 안된다❗❗

  • 범위 전송 - 표현 데이터의 범위를 지정해서 보내는 것
    표현 데이터를 보낼 때 중간부터 보낼 경우도 있기 때문에 Content-Range에 범위를 지정해서 전달한다😍

일반 정보 헤더❓

단순 정보성 헤더들이다❗

  • From - 유저 에이전트의 이메일 정보를 나타내는 헤더( 요청에서 사용 )
    일반적으로 잘 사용되지 않는다❗

  • Referer - 이전 웹 페이지 주소를 나타내는 헤더( 요청에서 사용 )
    현재 요청된 페이지의 바로 이전 웹 페이지의 주소가 들어가 있다❗
    ex)A -> C 페이지로 이동 했을때 Refer에는 A의 주소가 들어가 있다❗

  • User-Agent - 클라이언트의 애플리케이션 정보를 나타내는 헤더( 요청에서 사용 )
    클라이언트의 애플리케이션 정보(웹 브라우저, 등등)가 들어가 있다❗

  • Server - 요청을 처리하는 ORIGIN서버의 소프트웨어 정보를 나타내는 헤더 ( 응답에서 사용 )
    클라이언트의 Request 전달 과정에 여러 프록시 서버들을 거쳐서 도착하기 때문에 중간 노드들이 아닌 실제 응답해주는 서버의 정보가 들어가 있다.❗
  • Date - 메시지가 발생한 날짜와 시간을 나타내는 헤더 ( 응답에서 사용 )
    말그대로 응답 메시지가 발생한 날짜와 시간이다❗

특별 정보 헤더❓

특정 정보들을 제공해주는 헤더들이다❗

  • HOST - 요청한 호스트의 정보를 나타내는 헤더 ( 요청에서 사용 )
    HOST는 필수이다❗❗
    하나의 서버에서 여러 도메인을 처리해야 할 때 요청 도메인을 구분할 때 사용된다👏

  • Location - 페이지 리다이렉션할 주소를 나타내는 헤더
    웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, 자동으로 Location헤더에 들어가 있는 주소로 이동한다❗

  • Allow - 허용 가능한 HTTP 메서드를 나타내는 헤더
    말 그래도 서버에서 제공해주는 HTTP 메서드들을 의미한다❗
    ex) Allow: GET, PUT 이라고 응답 헤더에 추가하면 GET메서드와 PUT메서드만 제공한다는 뜻이다👏
  • Retry-After - 다음 요청을 하기까지 기다려야 하는 시간을 나타내는 헤더
    서비스가 언제까지 사용하지 못하는지 알려줄때 사용한다❗
    날짜로 표기할 수도 있고 초단위로 표기할 수도 있다❗
    ex) Retry-After: Fri, 31 Dec 1999 23:59:59 GMT
         Retry-After : 300

인증 헤더❓

  • Authrization - 클라이언트 인증 정보를 전달하는 헤더

  • WWW-Authentication - 리소스 접근시 필요한 인증 방법을 알려주는 헤더
    401 Unauthorized 응답과 함께 사용한다.

 

 

 

출처

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다. 📣 확인해주세요!본 강의는 자바 스

www.inflearn.com

 

 

반응형