# HTTP Semantics and Content

# Content Negotiation

同一个 Web 网站有可能存在着多份相同内容的页面。比如英文版和中文版的 Web 页面,它们内容上虽相同,但使用的语言却不同。

当浏览器的默认语言为英文或中文,访问相同 URI 的 Web 页面时,则会显示对应的英文版或中文版的 Web 页面。这样的机制称为内容协商(Content Negotiation)。

内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。

包含在请求报文中的某些首部字段(如下)就是判断的基准。

  • Accept

    表示客户端期望服务器返回的媒体格式。

  • Accept-Charset

    表示客户端期望服务器返回的字符集类型。

  • Accept-Encoding

    表示客户端期望服务器返回的内容编码方式。

  • Accept-Language

    表示客户端期望服务器返回的内容的自然语言。

  • Content-Language

    服务器通过此字段告知客户端返回的 Body 信息的语言是什么。