我正在阅读关于HTTP的内容,我对其内容协商问题有疑问。和面向对象的'特征
据说当HTTP服务器能够发送单个资源的多个表示时,内容协商用于决定发送哪个表示。在实践中,这将是一个什么样的例子?我无法弄清楚单个资源的多重表示会出现什么情况,因为我只是输入一个以http开头的URL,并且该URL唯一地标识了一个资源?
我也在某处读到它说http是"面向对象",这是什么意思?
谢谢
答案 0 :(得分:1)
我不知道"面向对象"是什么意思?与HTTP有关。这是编程语言的术语。
当您键入URL时,这不是发送到Web服务器的唯一内容。浏览器还添加了许多标题。这些可以从计算机的语言环境(本地化语言和格式设置)和其他约束来计算。内容协商标题采用的形式(q =质量级别):
`Accept-<aspect>: option1; q=<value1>, option2; q=<value2>`
如:
Accept-Language: de; q=1.0, en; q=0.5
含义:我更喜欢你的德语页面,但英语是第二选择。
通过这种方式,来自世界各地的用户可以访问Google.com并使用其母语获取搜索页面。
答案 1 :(得分:0)
我参与过的项目根据要求提供了几种不同类型的回复。例如,给定URL(虚构和说明性)http://example.com/catalog/item/23956
,我可能希望相同的路由映射到我的项目的JSON表示,到提供项目详细信息的HTML页面,甚至是pdf,取决于要求。
请求包含Accept
标头,例如,可能看起来像text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
,指定它需要html,xhtml或xml。
其他标题包括Accept-Language
,指定首选的语言,以及Accept-Encoding
,其中包括可以让服务器知道客户端能够解压缩发送给它的数据(例如gzip压缩)
设计良好的Web服务器可以根据请求的内容类型更改其响应,而不仅仅需要路由中的某种标识符(例如,以.htm
或.pdf
结尾)