HTTP에서 "표현 헤더"는 특정 리소스의 표현 방식에 대한 정보를 제공하는 헤더 그룹을 의미한다. 이러한 헤더는 주로 리소스의 내용과 그 내용이 어떻게 해석되어야 할지에 대한 메타데이터를 포함한다. 표현 헤더는 엔터티 헤더와 관련이 깊으며, 주로 콘텐츠의 형식, 인코딩, 언어 등을 지정하는데 사용된다.
표현 헤더에 포함되는 주요 헤더는 다음과 같다:
- Content-Type: 이 헤더는 전송되는 리소스의 미디어 타입을 나타낸다. 예를 들어, text/html, application/json 등이 이에 해당한다. Content-Type은 리소스가 어떤 형식의 데이터를 포함하고 있는지를 서버와 클라이언트에 알려주어 적절한 방식으로 처리할 수 있게 한다.
- Content-Encoding: 이 헤더는 데이터가 어떻게 압축되었는지를 나타낸다. 예를 들어, gzip 또는 deflate 압축 방식이 사용될 수 있다. 클라이언트는 이 정보를 바탕으로 데이터를 압축 해제할 수 있다.
- Content-Language: 이 헤더는 문서가 어떤 언어로 작성되었는지를 나타낸다. 예를 들어, en-US, ko-KR 등이 이에 해당한다. 이는 다국어 사이트에서 특정 사용자의 언어에 맞는 콘텐츠를 제공하는 데 유용하다.
- Content-Length: 이 헤더는 전송된 메시지 본문의 길이를 바이트 단위로 나타낸다. 이 정보는 메시지를 올바르게 수신하고 처리하는 데 중요하다.
HTTP에서 Quality Values, 흔히 q 값으로 표현되는 것은 콘텐츠 네고시에이션 과정에서 클라이언트가 서버에게 제공하는 다양한 옵션의 선호도를 표현하기 위해 사용된다. q 값은 각 옵션의 상대적인 품질 인자를 나타내며, 0에서 1 사이의 값으로 설정할 수 있다. 여기서 1은 최고의 선호도를, 0은 비선호(거부)를 의미하며, 기본값은 1이다.
이 값들은 특히 Accept, Accept-Language, Accept-Encoding 등의 요청 헤더에서 사용되어, 클라이언트가 여러 형태의 콘텐츠 중 어떤 것을 더 선호하는지를 서버에 명시적으로 알릴 수 있다
- Host
- Host 헤더는 HTTP 요청이 전송되는 대상 서버의 도메인 이름과 포트 번호를 지정한다. 이 헤더는 HTTP/1.1에서 필수적이며, 한 서버가 여러 도메인을 호스팅하고 있을 때 어떤 웹사이트가 대상인지 구분하는 데 사용된다. 예를 들어, Host: www.example.com 또는 Host: www.example.com:8080과 같이 사용된다. 이 헤더는 서버가 클라이언트의 요청을 올바르게 처리할 수 있도록 필수적인 정보를 제공한다.
- Location
- Location 헤더는 주로 HTTP 응답에서 사용되며, 클라이언트를 다른 URL로 리다이렉션하기 위해 사용된다. 이 헤더는 상태 코드 3xx (리다이렉션 관련), 201 (생성됨), 또는 202 (수락됨) 응답과 함께 사용되어 클라이언트에게 리다이렉션할 URL을 알려준다. 예를 들어, 서버가 Location: http://www.anotherexample.com 헤더를 포함한 응답을 보내면, 클라이언트는 해당 URL로 자동적으로 넘어가게 된다.
- Allow
- Allow 헤더는 특정 리소스에 대해 서버가 지원하는 HTTP 메서드(예: GET, POST, DELETE 등)의 목록을 나타낸다. 이 헤더는 주로 405 (Method Not Allowed) 상태 코드와 함께 사용되어 클라이언트가 해당 리소스에 유효하지 않은 요청 메서드를 사용했을 때 어떤 메서드들이 허용되는지 알려준다. 예를 들어, Allow: GET, POST는 해당 리소스에 대해 GET 및 POST 메서드만 사용할 수 있음을 의미한다.
- Retry-After
- Retry-After 헤더는 클라이언트가 다음 요청을 시도하기 전에 기다려야 하는 시간을 명시한다. 이 헤더는 주로 503 (Service Unavailable) 상태 코드와 함께 사용되어 서버가 일시적으로 요청을 처리할 수 없을 때 클라이언트가 얼마 동안 기다려야 하는지 알려준다. Retry-After는 날짜 또는 시간(초 단위)으로 지정될 수 있다. 예를 들어, Retry-After: 120은 120초 후에 다시 시도하라는 의미이다.
쿠키(Cookies)는 웹 서버가 사용자의 웹 브라우저에 저장하는 작은 텍스트 파일로, 사용자가 다시 해당 웹 사이트를 방문할 때마다 브라우저를 통해 웹 서버로 전송된다. 쿠키는 주로 사용자의 세션 관리, 개인화 및 사용자 행동 추적에 사용된다.
쿠키의 주요 기능:
- 세션 관리: 사용자의 로그인 상태, 프로필 정보, 구매 장바구니 내용 등을 기억하여 사용자의 세션을 유지한다.
- 개인화: 사용자의 선호와 설정을 저장하여 개인화된 경험을 제공한다. 예를 들어, 웹 사이트의 테마나 언어 선택을 기억하고 다음 방문 때 적용할 수 있다.
- 추적: 사용자의 방문 및 활동을 추적하여 행동 기반 광고나 분석에 활용한다.
쿠키의 작동 방식:
- 설정: 사용자가 웹 사이트를 방문하면 서버는 HTTP 응답 헤더에 Set-Cookie 헤더를 포함시켜 쿠키를 생성하고 클라이언트로 보낸다. 예를 들어, Set-Cookie: session_token=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT는 session_token이라는 쿠키를 설정하고 만료 날짜를 지정한다.
- 저장: 브라우저는 이 쿠키를 로컬에 저장하고, 동일한 서버에 다시 요청할 때마다 HTTP 요청 헤더에 쿠키를 포함시켜 전송한다.
- 만료: 쿠키는 설정된 만료 날짜나 세션 종료 시 자동으로 삭제될 수 있다. 만료 날짜가 없는 쿠키는 세션 쿠키라고 하며, 브라우저가 닫힐 때 삭제된다.
쿠키의 생명주기
쿠키의 생명주기는 쿠키가 생성되어 클라이언트(사용자의 브라우저)에 저장되고, 마침내 만료되어 제거되는 과정을 의미한다. 쿠키의 생명주기는 크게 세 단계로 나눌 수 있다: 생성, 저장 및 사용, 그리고 만료 및 삭제.
1. 생성
쿠키는 사용자가 웹 사이트를 방문할 때 서버로부터 생성된다. 서버는 HTTP 응답 헤더에 Set-Cookie 헤더를 포함시켜 쿠키를 클라이언트에 전송한다. 이 헤더에는 쿠키의 이름, 값, 만료 시간, 경로 및 도메인 등 다양한 속성이 포함될 수 있다. 예를 들어, 세션 토큰이나 사용자의 로그인 상태를 유지하기 위한 쿠키가 이 시점에 생성될 수 있다.
2. 저장 및 사용
쿠키가 클라이언트에 도착하면 브라우저는 이를 저장하고, 이후 동일한 서버에 대한 모든 요청에 쿠키를 자동으로 포함시켜 보낸다. 이를 통해 서버는 사용자가 이전에 방문했던 정보나 사용자의 선호를 기억할 수 있다. 쿠키는 사용자가 로그인 상태를 유지하거나 사이트의 특정 설정(언어 선호도 등)을 저장하는 데 주로 사용된다.
3. 만료 및 삭제
쿠키는 설정된 만료 날짜가 있거나 세션이 종료될 때 삭제된다. 만료 날짜(Expires) 또는 유효 기간(Max-Age)이 설정된 쿠키는 해당 시간이 지나면 자동으로 삭제된다. 예를 들어, Max-Age=3600은 쿠키가 생성된 후 3600초(1시간) 동안 유효함을 의미한다. 세션 쿠키는 Expires나 Max-Age 속성이 설정되지 않은 쿠키로, 브라우저가 닫히면 삭제된다.
또한, 사용자는 브라우저의 설정을 통해 언제든지 쿠키를 수동으로 삭제할 수 있다. 이는 개인 정보 보호 및 보안상의 이유로 종종 수행된다.
1. 도메인 (Domain)
쿠키의 Domain 속성은 쿠키가 유효한 도메인을 지정합니다. 이 속성을 사용하면 지정된 도메인과 그 서브도메인에서 쿠키를 사용할 수 있습니다. 예를 들어, 쿠키의 도메인이 example.com으로 설정되면 www.example.com, sub.example.com 등의 서브 도메인에서도 해당 쿠키에 접근할 수 있습니다. 만약 Domain 속성이 명시적으로 설정되지 않으면, 쿠키는 현재 문서의 도메인에만 속하게 됩니다.
2. 경로 (Path)
쿠키의 Path 속성은 쿠키가 유효한 서버 상의 경로를 지정합니다. 이 속성을 통해 특정 디렉토리와 그 하위 디렉토리에서만 쿠키를 사용할 수 있도록 제한할 수 있습니다. 예를 들어, 쿠키의 경로가 /blog로 설정되면 /blog 디렉토리와 그 아래의 모든 페이지에서 해당 쿠키를 사용할 수 있지만, /forum에서는 사용할 수 없습니다. Path 속성을 설정하지 않으면 기본적으로 쿠키를 생성한 페이지의 경로가 사용됩니다.
3. 보안 속성
쿠키에는 다음과 같은 보안 관련 속성이 설정될 수 있습니다:
- Secure: Secure 속성이 설정된 쿠키는 HTTPS 프로토콜을 통해서만 웹 서버로 전송됩니다. 이는 정보가 암호화되어 전송되므로 보안에 유리합니다. HTTP를 통한 접속에서는 이 쿠키를 전송할 수 없습니다.
- HttpOnly: HttpOnly 속성이 설정된 쿠키는 JavaScript 등 클라이언트 사이드 스크립트를 통해 접근할 수 없습니다. 이는 XSS(Cross-site scripting) 공격을 통한 쿠키의 유출을 방지하는 데 도움을 줍니다.
- SameSite: SameSite 속성은 쿠키가 같은 사이트의 요청과 함께만 전송되도록 제한합니다. 이는 CSRF(Cross-site request forgery) 공격을 방지하는 데 유용합니다. SameSite 속성은 Strict, Lax, 또는 None의 값을 가질 수 있습니다.
'CS' 카테고리의 다른 글
[HTTP | HTTP 웹 기본지식 | HTTP 헤더2 - 캐시와 조건부 요청] 캐시, 프록시 캐시 (0) | 2024.05.23 |
---|---|
[HTTP | HTTP 웹 기본지식 | HTTP 상태코드] 2,3,4,5xx 상태코드 (0) | 2024.05.22 |
[HTTP | HTTP 웹 기본지식 | HTTP 메서드 활용] HTTP API 설계 예시 (0) | 2024.05.22 |
[HTTP | HTTP 웹 기본지식 | HTTP 메서드] HTTP 메서드 (0) | 2024.05.21 |
[HTTP | HTTP 웹 기본지식 | HTTP 기본] HTTP 구조 (0) | 2024.05.21 |