HTTP 전송에 필요한 모든 부가정보를 헤더에 다 넣는다!
내용이 별 거 없군🤔
그런데!
HTTP 표준이 바뀌면서 RFC723x 변화가 일어남❗️
✔️ 최신 HTTP BODY
Content-Type : 표현 데이터의 형식
Content-Encoding : 표현 데이터의 압축 방식
Content-Language : 표현 데이터의 자연 언어
Content-Length : 표현 데이터의 길이
➡️ 표현 헤더는 전송, 응답 둘다 사용
클라이언트가 서버에게 원하는 표현으로 달라고 요청하는 것!
서버 : 아 그래..? 너가 원하는 우선순위가 이거니까 맞춰서 줄게🙂!
클라이언트가 선호하는 표현 요청
Accept : 클라이언트가 선호하는 미디어 타입 전달
Accept-Charset : 클라이언트가 선호하는 문자 인코딩
Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
Accept-Language : 클라이언트가 선호하는 자연 언어
➡️ 협상 헤더는 요청시에만 사용
⬆️ 한국어 브라우저를 사용하는데, 서버는 클라이언트의 정보를 아무것도 모르기 때문에 어떤 언어로 응답을 해줘야 할지 모름!
일단 기본 언어인 영어로 응답함!
⬆️ 이처럼 Accept-Language를 사용해서 한국어를 지정해서 서버로 보내면, 서버의 기본 언어는 영어지만 한국어로 보내줌!
여기서도 우선순위가 필요함!!!!!!!!
📌 Quality Values 1
- 0~1 클수록 높은 우선순위
- 생략하면 1
- Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
➡️ 1. ko-KR;q=1 (q생략)
➡️ 2. ko;q=0.9
➡️ 3. en-US;q=0.8
➡️ 4. en:q=0.7
📌 Quality Values 2
- 구체적인 것이 우선순위
- 생략하면 1
- Accept: text/, text/plain, text/plain;format=flowed, /
➡️ 1. text/plain;format=flowed
➡️ 2. text/plain
➡️ 3. text/
➡️ 4. /
📌 Quality Values 3
- 구체적인 것을 기준으로 미디어 타입을 맞춘다
- 잘 쓰이진 않음!
📌 전송 방식 설명
1️⃣ 단순 전송
2️⃣ 압축 전송
3️⃣ 분할 전송
4️⃣ 범위 전송
⬆️ content 길이를 알 수 있을 때 사용, 한번에 전송하고 한번에 쭉 받음
⬆️ Content-Encoding 꼭 필요
⬆️ 바이트를 쪼개서 보냄 (5바이트 보내고, 또 다른 5바이트가 만들어지면 그 다음에 보냄)
분할 전송을 할 때는 Context-Length 를 보내면 안된다!!
201(Created)
: Location 값은 요청에 의해 생성된 리소스 URI3xx(Redirection)
: Location 값은 요청을 자동으로 리디렉션하기 위한 대상 리소스를 가리킴405(Method Not Allowed)
에서 응답에 포함해야함 ⬆️ 로그인을 한 후, 다시 웰컴 페이지로 들어왔을 때 어떻게 될까?
나는 안녕하세요 홍길동님을 예상했지만, 손님이라고 뜸🤔
왜냐면 서버 입장에서는 로그인 한 사용자인지 아닌지 구별할 방법이 없기 때문!
HTTP는 기본적으로 무상태 프로토콜이다!
- 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어진다.
- 클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못한다.
- 클라이언트와 서버는 서로 상태를 유지하지 않는다.
🙁 : 그럼 개발자가 모든 요청과 링크에 사용자 정보를 포함하면 되잖아ㅡㅁ ㅡ?
🤬 : 밥통아 그렇게 하면 모든 요청에 사용자 정보가 포함되도록 개발을 해야 되잖아ㅡㅁ ㅡ 귀찮다구 ㅡㅁ ㅡ 그리고 브라우저를 완전히 종료하고 다시 여는 상황엔 어쩔건데? 어쩔 거냐고!
이걸 해결하기 위해 쿠키를 사용한다❗️
⬆️ Set-Cookie 에 유저정보를 넣어서 보낸다
웹 브라우저는 쿠키 저장소에 정보를 저장한다!!
⬆️ 로그인 이후 웰컴 페이지에 들어가면, 쿠키 저장소에서 정보를 뒤져서 서버에 보낸다!
⬆️ 모든 요청에 쿠키 정보를 자동으로 포함하기 때문에 웹 브라저가 웰컴으로 보내든 보드로 보내든 OK^^*
저는 ... 저는 .... 7개....? 아니... 6개....?