본문 바로가기

웹 프로그래밍/HTTP

HTTP 헤더(1)

HTTP 헤더 용도

HTTP 전송에 필요한 모든 부가정보

 

HTTP Body

-메시지 본문을 통해 표현 데이터 전달

-표현 헤더는 표현 데이터를 해석할수 있는 정보 제공(데이터 유형, 길이, 압축정보 등)

-Content-Type: 표현 데이터의 형식

-Content-Encoding: 표현 데이터의 압축 방식

-Content-Language: 표현 데이터의 자연 언어

-Content-Length: 표현 데이터의 길이

-표현헤더는 전송, 응답 둘다 사용

 

 

협상(콘텐츠 네고시에이션): 클라이언트가 선호하는 표현 요청

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

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

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

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

 

-협상과 우선순위1

    -Quality Values(q) 값 사용, 0~1 클수록 높은 우선순위, 생략하면 1

    -e.g. Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7

 

-협상과 우선순위2

    -구체적인 것이 우선함

    -e.g. Accept: text/* < text/plain < text/plain;format=flowed

 

-협상과 우선순위3

    -구체적인 것을 기준으로 미디어 타입을 맞춤

 

전송방식

-단순전송(Content-Length): 한번에 요청 한번에 받기

-압축전송(Content-Encoding): 압축해서 전송(용량이 줌)

-분할전송(Transfer-Encoding: chunked): 서버가 클라이언트에 덩어리씩 보냄 (전체 Content-Length X, 부분 O)

-범위전송(Range, Content-Range): 필요한 부분만 요청하고 받기(e.g. 전송이 중간에 중단)

 

 

일반 정보

-From(유저 에이전트의 이메일 정보): 거의 안씀

-Referer(이전 웹페이지 주소): A -> B로 이동하는 경우 B를 요청할때 Referer: A를 포함해서 요청(유입 경로 분석)

-User-Agent(유저 에이전트 애플리케이션 정보): 어떤 종류의 브라우저에서 장애가 발생하는지 파악, 통계 정보

-Server(요청을 처리하는 ORIGIN 서버의 소프트웨어의 정보) : e.g. Apache/2.2.22(Debian), 응답에서 사용

-Date(메시지가 발생한 날짜와 시간): 응답에서 사용

 

특별한 정보

-Host(요청한 호스트 정보(도메인))

    -요청에서 사용, 필수

    -하나의 서버가 여러 도메인을 처리해야 할때(가상 호스트)

    -하나의 IP 주소에 여러 도메인이 적용되어 있을때

-Location(페이지 리다이렉션)

    -3xx 응답의 결과에 Location 헤더 있으면 그 위치로 자동 리다이렉트

    -201(Created): Location값은 생성된 리소스 URI

-Allow(허용 가능한 HTTP 메서드)

    -405(Method Not Allowed)에서 응답에 포함해야함(거의 안씀)

-Retry-After(기다려야 하는 시간)

    -503(Service Unavailable): 서비스가 언제까지 불능인지 알려줄수 있음

 

인증

-Authorization: 클라이언트 인증 정보를 서버에 전달, e.g. Autoriaction: Basic xxxxxxxxxxx

-WWW-Authenticate(리소스 접근시 필요한 인증 방법 정의): 401 Unauthorized 응답과 함께 사용

 

쿠키

-Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답)

-Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달(e.g. 로그인)

 

stateless: 클라이언트와 서버는 서로 상태를 유지하지 않음 -> 로그인 했는데 식별이 안됨

-> 쿠키로 해결 -> 로그인 이후 쿠키 저장소에서 조회해서 쿠키를 자동으로 서버로 보냄

 

-쿠키 사용처

    -로그인 세션

    -광고 정보 트래킹

-쿠키 정보는 항상 서버에 전송됨

    -네트워크 추가 트래픽 유발

    -최소한의 정보만 사용(세션 id, 인증토큰)

-(주의) 보안에 민감한 데이터는 저장하면 안됨

 

-쿠키: 생명주기(Expires, max-age)

    -만료일이 되면 쿠키 삭제

    -세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시 까지만 유지

    -영속 쿠키: 만료 날짜를 입력하면 해당 날짜까지 유지

 

-쿠키: 도메인(Domain)

    -명시: 명시한 문서 기준 도메인 + 서브 도메인 포함

    -생략: 현재 문서 기준 도메인만 적용

 

-쿠키: 경로(Path)

    -이경로를 포함한 하위 경로 페이지 쿠키 접근(일반적으로 루트로 지정)

 

-쿠키: 보안(Secure, HttpOnly, SameSite)

    -Secure: https인 경우에만 전송

    -HttpOnly: 자바스크립트에서 접근 불가, HTTP 전송에만 사용

    -SameSite: 요청 도메인과 쿠키에 설정된 도메인이 같은 경우만 쿠키 전송

'웹 프로그래밍 > HTTP' 카테고리의 다른 글

HTTP 헤더(2)  (0) 2023.02.26
HTTP 상태코드  (0) 2023.02.24
HTTP 메서드 활용  (0) 2023.02.24
HTTP 메서드  (0) 2023.02.22
HTTP  (0) 2023.02.22