개념노트

HTTP Header

1231. 2024. 12. 15. 10:13

1. Content-Type

응답 본문의 미디어 타입을 나타냅니다.

  • Content-Type: text/html; charset=UTF-8: HTML 문서이며 UTF-8 인코딩을 사용합니다.
  • Content-Type: application/json: JSON 데이터입니다.
  • Content-Type: image/jpeg: JPEG 이미지입니다.
  • 기타 미디어 타입: application/xml, application/pdf, audio/mpeg, video/mp4 등.

2. Content-Length

응답 본문의 크기(바이트)를 나타냅니다.

  • Content-Length: 1234: 응답 본문의 크기가 1234바이트임을 나타냅니다.

3. Content-Encoding

응답 본문에 적용된 압축 알고리즘을 나타냅니다.

  • Content-Encoding: gzip: 응답 본문이 gzip 압축되었음을 나타냅니다.
  • Content-Encoding: deflate: 응답 본문이 deflate 압축되었음을 나타냅니다.
  • Content-Encoding: br: 응답 본문이 Brotli 압축되었음을 나타냅니다.

4. Cache-Control

캐시 제어 메커니즘을 설정합니다.

  • Cache-Control: max-age=3600: 응답이 생성된 후 3600초(1시간) 동안 캐시될 수 있음을 나타냅니다.
  • Cache-Control: no-cache: 캐시된 버전을 사용하기 전에 서버에 재검증해야 함을 나타냅니다.
  • Cache-Control: no-store: 응답을 캐시에 저장하지 않아야 함을 나타냅니다.
  • Cache-Control: public: 응답이 공개 캐시에 저장될 수 있음을 나타냅니다.
  • Cache-Control: private: 응답이 개인 캐시에만 저장되어야 함을 나타냅니다.

5. Expires

응답 본문의 만료 날짜와 시간을 나타냅니다.

  • Expires: Wed, 12 Feb 2020 12:00:00 GMT: 응답이 2020년 2월 12일 12:00:00 GMT에 만료됨을 나타냅니다.

6. Last-Modified

응답 본문이 마지막으로 수정된 날짜와 시간을 나타냅니다.

  • Last-Modified: Wed, 12 Feb 2020 12:00:00 GMT: 응답 본문이 2020년 2월 12일 12:00:00 GMT에 마지막으로 수정되었음을 나타냅니다.

7. ETag

응답 본문의 특정 버전을 식별하는 고유한 토큰입니다.

  • ETag: "abc123": 응답 본문의 현재 버전을 식별하는 토큰입니다.

8. Set-Cookie

클라이언트에 설정될 쿠키를 지정합니다.

  • Set-Cookie: session_id=abc123; Expires=Wed, 12 Feb 2020 12:00:00 GMT; Path=/; HttpOnly; Secure
    • session_id=abc123: 쿠키의 이름과 값을 설정합니다.
    • Expires=Wed, 12 Feb 2020 12:00:00 GMT: 쿠키의 만료 날짜와 시간을 설정합니다.
    • Path=/: 쿠키가 적용될 경로를 설정합니다.
    • HttpOnly: 쿠키가 JavaScript에서 접근할 수 없도록 설정합니다.
    • Secure: 쿠키가 HTTPS 연결에서만 전송되도록 설정합니다.
  • Set-Cookie: user_preference=dark_mode; Max-Age=31536000; Path=/
    • user_preference=dark_mode: 쿠키의 이름과 값을 설정합니다.
    • Max-Age=31536000: 쿠키의 유효 기간을 초 단위로 설정합니다 (1년).

9. Access-Control-Allow-Origin

교차 출처 리소스 공유(CORS)를 허용할 도메인을 지정합니다.

  • Access-Control-Allow-Origin: *: 모든 도메인에서의 요청을 허용합니다.
  • Access-Control-Allow-Origin: https://example.com: 특정 도메인(https://example.com)에서의 요청을 허용합니다.

10. Access-Control-Allow-Methods

CORS에서 허용되는 HTTP 메서드를 지정합니다.

  • Access-Control-Allow-Methods: GET, POST, PUT, DELETE: 지정된 HTTP 메서드(GET, POST, PUT, DELETE)를 허용합니다.

11. Access-Control-Allow-Headers

CORS에서 허용되는 HTTP 헤더를 지정합니다.

  • Access-Control-Allow-Headers: Content-Type, Authorization: 지정된 HTTP 헤더(Content-Type, Authorization)를 허용합니다.

12. Location

리다이렉션 응답(3xx 상태 코드)에서 클라이언트가 리디렉션되어야 할 URL을 지정합니다.

13. Server

웹 서버의 소프트웨어 정보를 나타냅니다.

  • Server: Apache/2.4.41 (Ubuntu): Apache 웹 서버 버전 2.4.41이 Ubuntu에서 실행 중임을 나타냅니다.
  • Server: nginx/1.18.0: Nginx 웹 서버 버전 1.18.0이 실행 중임을 나타냅니다.

14. Date

응답이 생성된 날짜와 시간을 나타냅니다.

  • Date: Wed, 12 Feb 2020 12:00:00 GMT: 응답이 2020년 2월 12일 12:00:00 GMT에 생성되었음을 나타냅니다.

15. Strict-Transport-Security

HTTPS를 통해서만 리소스에 접근해야 함을 나타냅니다.

  • Strict-Transport-Security: max-age=31536000; includeSubDomains
    • max-age=31536000: HTTPS를 통해서만 리소스에 접근해야 하는 기간을 초 단위로 설정합니다 (1년).
    • includeSubDomains: 모든 하위 도메인에도 이 정책을 적용합니다.

16. X-Frame-Options

클릭재킹 공격을 방지하기 위해 프레임 내에서 페이지 렌더링을 제어합니다.

  • X-Frame-Options: DENY: 페이지가 어떤 프레임 내에서도 렌더링되지 않아야 함을 나타냅니다.
  • X-Frame-Options: SAMEORIGIN: 페이지가 동일한 출처의 프레임 내에서만 렌더링되어야 함을 나타냅니다.

17. X-Content-Type-Options

MIME 스니핑을 방지하고 선언된 Content-Type을 신뢰하도록 지정합니다.

  • X-Content-Type-Options: nosniff: 브라우저가 선언된 Content-Type을 신뢰하고 MIME 스니핑을 시도하지 않아야 함을 나타냅니다.

18. X-XSS-Protection

브라우저의 내장 XSS 필터를 활성화하도록 지정합니다.

  • X-XSS-Protection: 1; mode=block: XSS 공격이 감지되면 페이지 렌더링을 차단합니다.

19. Referrer-Policy

Referer 헤더에 포함되어야 할 정보를 제어합니다.

  • Referrer-Policy: no-referrer: Referer 헤더를 포함하지 않습니다.
  • Referrer-Policy: origin: 도메인 정보만 포함합니다.
  • Referrer-Policy: strict-origin-when-cross-origin: 동일한 출처로의 요청에는 전체 URL을, 교차 출처 요청에는 도메인 정보만 포함합니다.

20. Content-Security-Policy

페이지에 대한 콘텐츠 보안 정책을 지정합니다.

  • Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' 'unsafe-inline'
    • default-src 'self': 기본적으로 모든 리소스를 동일한 출처에서만 로드합니다.
    • script-src 'self' https://example.com: 스크립트는 동일한 출처와 https://example.com에서만 로드합니다.
    • style-src 'self' 'unsafe-inline': 스타일시트는 동일한 출처에서 로드하고 인라인 스타일을 허용합니다.

21. Content-Disposition

응답 본문의 표시 방식을 제어합니다.

  • Content-Disposition: inline: 응답 본문을 웹 페이지에 인라인으로 표시합니다.
  • Content-Disposition: attachment: 응답 본문을 다운로드할 파일로 취급합니다.
  • Content-Disposition: attachment; filename="example.txt": 응답 본문을 지정된 파일 이름("example.txt")으로 다운로드합니다.
  • Content-Disposition: attachment; filename*=UTF-8''%EC%98%88%EC%A0%9C.txt: 파일 이름에 URL 인코딩을 사용하여 유니코드 문자를 포함할 수 있습니다.

'개념노트' 카테고리의 다른 글

안드로이드 (컴포넌트 아키텍처)  (0) 2024.12.29
안드로이드 (기본구조)  (0) 2024.12.29
GraphQL  (0) 2024.12.29
역방향 프록시(Reverse Proxy)  (1) 2024.12.15
Web  (0) 2024.12.15