- 字节长度
在 HTTP 响应头中,除了 `Content-Type` 外,还有许多其他重要的属性。以下是一些常见且关键的响应头属性:
- **Content-Length**
-
**作用**:指示响应体的大小(以字节为单位)。
-
**示例**:`Content-Length: 348`
-
用途:帮助客户端了解如何读取响应数据,确保响应内容的完整接收。
- **Cache-Control**
-
**作用**:用于控制缓存机制,如缓存是否过期、缓存时间等。
-
**示例**:`Cache-Control: no-store` 或 `Cache-Control: max-age=3600`
-
用途:告知客户端或中间缓存服务器如何缓存响应数据。
- **Expires**
-
**作用**:指定响应过期的时间。过期时间通常是一个 GMT 格式的日期。
-
**示例**:`Expires: Tue, 20 Oct 2024 16:00:00 GMT`
-
用途:指示缓存内容的失效时间,与 `Cache-Control` 配合使用。
- **ETag**
-
**作用**:标识响应内容的唯一版本。如果内容未发生变化,客户端可以使用该值来避免不必要的数据传输。
-
**示例**:`ETag: "686897696a7c876b7e"`
-
用途:用于协商缓存,客户端可以使用该值来验证本地缓存是否有效。
- **Last-Modified**
-
**作用**:指示响应体的最后修改时间。
-
**示例**:`Last-Modified: Wed, 21 Oct 2024 07:28:00 GMT`
-
用途:客户端可以用它来决定是否需要重新获取数据,配合 `If-Modified-Since` 请求头使用。
- **Location**
-
**作用**:在 3xx 重定向响应中指示客户端重定向的目标 URL。
-
**示例**:`Location: https://example.com/newpage\`
-
用途:用于重定向响应,如 301(永久重定向)或 302(临时重定向)等状态码。
- **Server**
-
**作用**:指示处理请求的服务器软件的名称及版本。
-
**示例**:`Server: Apache/2.4.46 (Ubuntu)`
-
用途:提供有关服务器的信息,可能用于调试或分析。
- **Set-Cookie**
-
**作用**:设置 cookies 给客户端,用于在后续请求中进行会话管理或存储其他状态信息。
-
**示例**:`Set-Cookie: sessionid=abc123; Path=/; HttpOnly`
-
用途:客户端存储 cookies,并在随后的请求中带上这些 cookies。
- **Access-Control-Allow-Origin**
-
**作用**:允许跨域请求的源。通常在 CORS(跨源资源共享)中使用。
-
**示例**:`Access-Control-Allow-Origin: *`
-
用途:指定哪些源(域名)可以访问资源。
- **Content-Encoding**
-
**作用**:指示响应体的编码格式,通常用于压缩内容。
-
**示例**:`Content-Encoding: gzip`
-
用途:帮助客户端理解如何解码响应体数据。
- **Vary**
-
**作用**:告诉缓存服务器如何根据请求头的某些属性来选择不同的缓存版本。
-
**示例**:`Vary: Accept-Encoding`
-
用途:确保客户端根据不同的请求头(如 `Accept-Encoding`)使用不同的缓存版本。
- **WWW-Authenticate**
-
**作用**:在需要认证的请求中,指定认证方法和域。
-
**示例**:`WWW-Authenticate: Basic realm="Example"`
-
用途:用于响应 401 未授权状态码,提示客户端如何进行认证。
- **X-Content-Type-Options**
-
**作用**:防止浏览器 MIME 类型嗅探,确保响应按指定的 `Content-Type` 进行解析。
-
**示例**:`X-Content-Type-Options: nosniff`
-
用途:增强安全性,防止某些类型的攻击(如 MIME 类型注入)。
- **Strict-Transport-Security (HSTS)**
-
**作用**:告知浏览器仅通过 HTTPS 协议与服务器通信。
-
**示例**:`Strict-Transport-Security: max-age=31536000; includeSubDomains`
-
用途:提高 HTTPS 安全性,防止中间人攻击。
- **Content-Disposition**
-
**作用**:指示浏览器如何处理响应内容,通常用于下载文件。
-
**示例**:`Content-Disposition: attachment; filename="example.pdf"`
-
用途:告诉客户端以附件形式下载文件。
这些响应头属性共同帮助控制如何缓存内容、传输数据以及保障通信的安全性。
了解 **HTTP Response Header** 中的 `Content-Type` 类型,常见的 `Content-Type` 是指服务器响应返回的内容类型。这个标头(header)告诉客户端(浏览器或其他用户代理)如何解析响应的内容。
`Content-Type` 类型有很多种,以下是一些常见的类型和子类型:
1. **文本数据类型**
- **`text/plain`**
纯文本格式,无格式,适合显示简单的文本信息。
- **`text/html`**
HTML 格式,用于网页内容的返回。
- **`text/css`**
CSS 样式表,用于样式化网页。
- **`text/javascript`** 或 **`application/javascript`**
JavaScript 脚本文件。
- **`text/xml`**
XML 格式的文本内容。
2. **HTML 数据类型**
- **`text/html`**
HTML 格式文档,浏览器会根据该类型解析 HTML 内容并渲染页面。
3. **图像类型**
- **`image/jpeg`**
JPEG 图片格式。
- **`image/png`**
PNG 图片格式。
- **`image/gif`**
GIF 图片格式。
- **`image/webp`**
WebP 图片格式,提供更高效的压缩。
- **`image/svg+xml`**
SVG 矢量图格式,用于描述二维矢量图形。
4. **音频/视频类型**
- **`audio/mpeg`**
MP3 音频格式。
- **`audio/wav`**
WAV 音频格式。
- **`audio/ogg`**
Ogg 音频格式。
- **`video/mp4`**
MP4 视频格式。
- **`video/webm`**
WebM 视频格式。
- **`video/ogg`**
Ogg 视频格式。
5. **应用程序数据类型**
- **`application/json`**
JSON 格式的数据,广泛用于前后端数据交换。
- **`application/xml`**
XML 格式的应用数据。
- **`application/javascript`**
JavaScript 文件。
- **`application/xhtml+xml`**
XHTML 格式。
- **`application/ld+json`**
JSON-LD 格式,通常用于结构化数据。
- **`application/octet-stream`**
二进制流数据,通常用于文件下载。
- **`application/pdf`**
PDF 文档格式。
- **`application/zip`**
ZIP 压缩文件格式。
- **`application/msword`**
Microsoft Word 文档格式。
- **`application/vnd.ms-excel`**
Excel 文件格式。
- **`application/vnd.openxmlformats-officedocument.wordprocessingml.document`**
DOCX 格式的 Microsoft Word 文件。
- **`application/x-www-form-urlencoded`**
表单数据提交格式,通常用于 POST 请求。
- **`application/json-patch+json`**
用于 JSON Patch 请求的 JSON 格式。
6. **多部分数据类型**
- **`multipart/form-data`**
用于表单数据提交,支持文件上传。
- **`multipart/byteranges`**
用于服务器返回文件的一部分(如文件分段下载)。
7. **字体文件类型**
- **`font/woff`**
Web Open Font Format 字体。
- **`font/woff2`**
Web Open Font Format 2 字体,较新的版本,支持更高效的字体压缩。
- **`font/otf`**
OpenType 字体。
- **`font/ttf`**
TrueType 字体。
8. **其他常见类型**
- **`application/x-shockwave-flash`**
Flash 内容(较少见,Flash 已被逐步淘汰)。
- **`application/xml`**
XML 格式,常用于数据交换或请求和响应的格式。
- **`application/x-www-form-urlencoded`**
用于表单数据提交。
- **`application/x-rtf`**
富文本格式文件。
总结
`Content-Type` 可以细分为很多不同的类型和子类型,涵盖了文本、图像、音频、视频、文件、JSON、XML 等多种格式。不同的 `Content-Type` 类型指示服务器响应内容的格式,帮助客户端(如浏览器)正确解析和呈现这些内容。