http 통신의 근간인 https메시지에 대해 알아보자
인바운드
: 클라이언트 -> 프락시1 -> 프락시2 -> 서버
아웃바운드
: 서버 -> 프락시2 -> 프락시1 -> 클라이언트
즉, request가 인바운드, response가 아웃바운드
http 메시지의 흐름은 다운스트림이다.
따라서 요청의방향
에 따라 업스트림과 다운스트림이 달라질수있다.
GET /user/info HTTP/1.0
Host : www.naver.com
HTTP/1.1 200 OK // 메시지의 스킴 및 상태 *
Content-type : text/plain
Content-length : 19 ... // 헤더속성 *
CRLP
Hellow world!
{ "id" : "twkim", "pw" : "1234"}
new formData() ... // 본문 데이터 ?
메서드
: 서버가 수행하길 원하는 동작
요청 URL
: 요청 대상이 되는 URL로, 절대URL형태이며, 실무에선 요청 URL을 바라보며 소통함
버전
: http버전이며 1.0은 대중화 1.1은 최신정도로 알면될듯?
상태코드
: 응답 상태를 나타내는 코드로 성공시 200
을 내려준다
사유 구절
: 응답상태를 사람이 이해할수있는 구절로 알려주며, 이는 변동가능하다
헤더
: " name : value" 형태를 띄며 특정 버전에서는 특정 헤더가 필수로 요구되기도한다
헤더는 항상 CRLF(빈줄)로 끝나야하지만 생략되는 예외처리도 해야한다. (빼먹는 경우가 잦음)
본문
: string, 이진데이터들의 집합. 비어있을수도있음.
메서드 / 요청URL /버전
헤더
본문
GET /img/react.png HTTP/1.1
Host : www.b4play.io
버전 / 상태코드 / 상태구절
헤더
본문
HTTP/1.1 200 OK
Content-type : image/png
Content-length : 9999
여기서
안전한 메서드
와멱등성
에 대해 짚고 넘어가면,
안전한 메서드는 서버의 상태를 아예 변경시키지 않는다.
하지만 멱등한 메서드는 서버의 상태를 변화시킬수도있고, 변경시키지 않을수도있다.
https://velog.io/@dion/HTTP-%EB%A9%94%EC%86%8C%EB%93%9C%EC%9D%98-%EB%A9%B1%EB%93%B1%EC%84%B1-%EA%B7%B8%EA%B2%8C-%EB%AD%94%EB%8D%B0
1xx : 정보성 상태코드로 HTTP/1.1에 도입.
2xx : 성공 상태코드
3xx : 리다이렉션 상태코드로, 요청한 리소스가 다른위치에 있거나할때 알림
4xx : 클라이언트 에러 상태코드
5xx : 서버 에러 상태코드
일반헤더 : 클라이언트, 서버 양쪽에서 사용가능한 헤더, ex) Date헤더
요청헤더 : 서버에게 클라이언트에서 받고자하는 타입을 명,
응답헤더 : 응답 및 서버정보를 나타내는 헤더
엔터티헤더 : 엔터티 본문데이터의 MIME 타입을 나타내는 헤더, ex) Content-Type
ISO표준
ex) iso-latin-1
https://ko.wikipedia.org/wiki/ISO/IEC_8859-1
ex) iso-timestamp
https://en.wikipedia.org/wiki/ISO_8601
확장헤더 : 개발자에 의해 만들어진 비표준 헤더