이번 TIL은 인프런의 "모든 개발자를 위한 HTTP 웹 기본 지식"을 학습하고, 정리한 내용입니다.
만약, 제 글의 내용을 퍼갈 시에는 " 모든 개발자를 위한 HTTP 웹 기본 지식 "도 출처에 첨부하시기 바랍니다.
이제는 좀 특별한 HTTP 헤더들에 대해서 알아보자!!
진짜 중요하다!!!
"요청"에서 사용하는데, 반드시 있어야하는 "필수"값이다!!
하나의 서버가 여러 도메인을 처리해야 할 때??
=> 하나의 IP 주소에 여러 도메인이 적용되어 있을 때, 그 때 구분을 해준다.
무슨 말인지 듣기만해서는 잘 모르겠다. 예제를 보면서 이해해보자!!
그런데, HOST라는 게 없으면, 무슨 문제가 생길까??
/hello
라고 요청을 보낸다. 그런데, 서버 입장에서는 /hello
가 aaa.com과 관련된 어플리케이션에 들어가야 될지 bbb.com에 들어가야 될지 구분을 할 방법이 없다.
왜냐면, 지금 IP로만 통신을 한다. 즉, "은마아파트"라는 주소만 있고, "몇 동 몇 호"로 가야하는지를 모르는 상황이다.
그래서, 초창기에 이것 때문에 문제가 많았다. 그래서 나중에 "HOST 헤더를 무조건 넣어야 된다!!"고 스펙이 개정이 된다.
도메인을 입력해서 넣으면, 그것을 Host 헤더에 넣어준다.
위의 통신은 IP로만 통신을 한다. 그런데, HOST 헤더가 있기 때문에, 서버에서 받아서 해당 HTTP가 어떻게 들어가는지를 아는 거다. => 이것을 "가상 호스팅"이라고 한다.
=> 서버에서 위의 그림과 같이 표를 만들 수있다.
=> HOST가 aaa.com이면 어디로 보내세요~ 이런 것들 다 서버 쪽에서 설정을 해서 구현을 할 수있다.
URL 경로는 있는데, HTTP 메서드로 POST를 지원하지 않는다면??
서버는 클라이언트 측에 405 상태 코드를 내려주면서, Allow가 되는 메서드들을 보내줘야 한다.
그래야, 클라이언트가 어떤 메서드가 지원되는지를 알고 다시 보낼 수가 있으니까...
그런데, Allow는 서버에서 많이 구현되어 있지는 않다.
그냥 '이런 게 있구나..' 하고 참고 정도만 하자!!
서버가 503 상태 코드를 내려줄 때, Retry-After
통해서 언제까지 서버가 불능인지 기다려야 하는 시간을 클라이언트 측으로 알려줄 수가 있다.
예를 들어, 금일 7PM에서 서비스 점검 해제가 된다면,
위와 같이 표시를 해서 해제되는 시간이 표시해준다.
또한, 몇 분 뒤에 될 거라는 방식을 알려줄 거라면, 초단위로 계산해서 알려준다.
분(min)
을 알려줄 때는 초단위로 계산해서 알려준다.
근데, 실제로 Retry-After
는 사용하기 어렵다.