跳至主要内容
短.be

内容协商

客户端与服务器通过 HTTP 头部协商最优内容格式 (语言、数据格式、编码方式) 的机制。

2025年12月5日 · 约 1 分钟阅读

重定向

内容协商 (Content Negotiation) 是 HTTP 通信中客户端 (浏览器) 与服务器协商所请求资源最优表现形式的机制。同一 URL 可以根据用户的语言设置、设备类型和支持的格式返回不同的内容。

内容协商主要通过 HTTP 请求头实现。Accept 头部 (支持的媒体类型:text/html、application/json 等)、Accept-Language 头部 (期望的语言:ja、en-US 等)、Accept-Encoding 头部 (支持的压缩方式:gzip、br 等) 是最常见的协商头部。

多语言网站中的内容协商与短链接密切相关。同一短链接被点击后,可以根据用户浏览器的语言设置重定向到中文页面或英文页面。但从 SEO 角度来看,更推荐为每种语言设置独立的 URL 并通过 hreflang 标签关联。基于内容协商的语言切换可能导致搜索引擎无法正确索引各语言版本。

API 设计中内容协商同样重要。短链接服务的 API 根据 Accept 头部返回 JSON 或 XML 响应是常见做法。RESTful API 设计原则推荐为同一资源提供多种表现形式。

内容协商分为服务器驱动型 (服务器根据请求头判断) 和代理驱动型 (服务器提供选项由客户端选择) 两种。Web 领域中前者的使用远为普遍。相关书籍可在 Amazon 上查阅。

分享到 XHatena

这篇文章对您有帮助吗?

相关术语

相关文章

常见问题

应该使用内容协商来自动切换语言吗?
从用户体验角度来看很方便,但 SEO 方面需要注意。搜索引擎可能无法正确索引各语言版本,因此更推荐为每种语言设置独立 URL 并通过 hreflang 标签关联。
如何在 API 中实现内容协商?
解析请求的 Accept 头部,如果是 application/json 则返回 JSON,如果是 application/xml 则返回 XML。当请求了不支持的格式时,返回 HTTP 406 (Not Acceptable)。
Accept-Language 头部是如何设置的?
基于浏览器的语言设置自动发送。例如中文环境的浏览器会发送类似"Accept-Language: zh-CN,zh;q=0.9,en;q=0.8"的内容,以优先级顺序列出多种语言。

想要创建短链接吗?

免费缩短网址