什么是300状态码?

目标资源有多个表示,每个表示都有自己更特定的标识符,并且提供了关于替代的信息,以便用户(或用户代理)可以通过将请求重定向到一个或多个这些标识符来选择首选表示。

换句话说,服务器希望用户代理参与被动协商,以选择最适合其需求的表示1

如果服务器有一个首选选项,服务器应该生成一个Location报头字段,其中包含首选选项的URI引用。用户代理可以使用Location字段值进行自动重定向。

对于HEAD以外的请求方法,服务器应该在300响应中生成一个有效负载,其中包含表示元数据和URI引用列表,用户或用户代理可以从中选择最喜欢的一个。如果用户代理理解所提供的媒体类型,它可以自动从列表中进行选择。本规范没有定义自动选择的特定格式,因为HTTP试图保持与其有效负载的定义正交。在实践中,通过共享设计或内容协商确定的、易于解析的用户代理可以接受的格式,或者通过一些普遍接受的超文本格式提供表示。

默认情况下,300响应是可缓存的;也就是说,除非方法定义或显式缓存控件另有指示2

注意:最初的300状态码建议将URI报头字段定义为提供一组可选表示形式,这样它可以用于200、300和406个响应,并在HEAD方法的响应中传输。然而,缺乏部署和语法上的分歧导致URI和Alternates(后续提案)从该规范中删除。可以使用一组Link报头字段来通信该列表3.,虽然部署是一个鸡生蛋还是蛋生鸡的问题,但每一个都具有“交替”关系。


300个代码引用

Rails HTTP状态符号: multiple_choices

HTTP状态常数http。StatusMultipleChoices

Symfony HTTP状态常量响应:HTTP_MULTIPLE_CHOICES

Python2 HTTP状态常量httplib。MULTIPLE_CHOICES

Python3+ HTTP状态常量http.client.MULTIPLE_CHOICES

Python3.5+ HTTP状态常量http.HTTPStatus.MULTIPLE_CHOICES

额外的资源


返回HTTP状态码列表

最重要的