HTTP的隐藏function
你认为HTTP的隐藏function值得一提吗?
我的意思是隐藏的function已经是标准的一部分,但是广泛地相当未知或未被使用。
请每个答案只有一个function。
这应该是418我是一个茶壶状态代码, 超文本咖啡壶控制协议 (HTTP的扩展)的一部分。 每次都让我开怀大笑
2.3.2 418我是一个茶壶
任何尝试用茶壶冲泡咖啡都会导致错误代码“418我是茶壶”。 由此产生的实体主体可能短而粗壮。
推荐人拼写错误,并认定拼写错误应予以保留。
明显的答案:PUT,DELETE,TRACE,OPTIONS,CONNECT方法
大多数人知道GET和POST方法,因为这是他们在构build表单时使用的。 浏览器也使用HEAD了很多。 其他方法则不太知名; 他们主要是由更具体的应用程序使用。
有没有人见过402付款要求 ?
204无内容
我以为204就是如果你没有内容要显示,但规范看起来像有用户代理“不改变其文档视图”的其他行为。
根据HOWTO:configurationApache返回AJAX的HTTP 204(无内容)
FWIW,Google实际上做了类似的事情。 每次用户点击search结果中的链接时,Google都会自动logging点击; 来自ping的响应代码是HTTP 204。
此外,如果您想要保存networkingstream量的每个最后一个字节,则“ 无内容”build议这是“networking错误”或“信标”的好技术。
响应代码410 Gone
:
(…)服务器所有者希望远程链接到该资源被删除。 (……)
networking蜘蛛(最着名的是谷歌)将取消索引(通常在下一次爬行)一个页面,开始返回410。
在dynamic内容中使用Last_Modified或ETag标头
有时候,您的dynamic内容可能很大,而且成本很高,而且从请求到请求可能不会发生变化。 您可以将Last_Modified或ETag标头添加到您生成的响应中。
在昂贵的dynamic代码的顶部,您可以使用If_Modified_Since或If_None_Match来确定内容请求者是否已经是最新的。 如果将响应状态更改为“304未修改”并结束请求。
一些服务器端技术正式提供了这些function,但即使在ASP-Classic中也是如此。
注意,这与设置Cache-Control,Expires标题不同,它可以确保客户端始终拥有最新的信息。
您可以使用Range
和If-Range
请求头分别指定的字节范围和唯一文件标识符或文件修改时间戳来请求恢复 (大)HTTP响应(例如文件下载)。 如果服务器在初始响应上分别发送了Accept-Ranges: bytes
和ETag
或Last-Modified
响应头,则分别发送服务器支持字节范围请求,唯一文件标识符和文件修改时间戳的通知。
初始响应可能看起来像( ETag
通常由文件名,大小和上次修改时间戳组成):
Accept-Ranges: bytes ETag: file.ext_1234_1234567890 Content-Range: bytes 0-1233/1234
当下载例如1KB(1024字节)中止时,客户端可以如下继续:
If-Range: file.ext_1234_1234567890 Range: bytes=1024-
哪个应该返回这个响应与正文中的适当的字节:
Accept-Ranges: bytes ETag: file.ext_1234_1234567890 Content-Range: bytes 1024-1233/1234
ReST尝试将HTTP作为接口协议推到极限。
这不是一个隐藏的function ,但从查看定义明确的ReST API,人们可以很好地掌握HTTP的工作原理,并find一些很好的例子,说明HTTP方法,状态码和头文件的简单组合,和来回。
预告片 (与标题相反)
该协议允许您定义自己的自定义字段。 如果您不想使用cookies,可以使用这些信息来携带其他信息。
HTTP 100(继续)状态
客户端可以发送请求消息与请求主体, 以确定源服务器是否愿意接受请求..
在某些情况下,如果服务器在不看身体的情况下拒绝消息 ,则客户端发送消息可能不合适或者效率低下。
可以用来避免来自stream氓客户的stream量 ..和/或带宽是一种珍贵的商品。
但是,为了充分利用此function,HTTP1.1客户端,服务器和代理服务器还有一些标准。 请参阅HTTP / 1.1 RFC 2616以进一步阅读HTTP连接。
状态码 :
- 当调用URI
http://www.domain.invalid/index.php?id=44
,如果查询 (id=44
)无法返回资源,为什么不返回状态码404
? - 当调用URI
http://www.domain.invalid/index.php?id=foo
,而id
只接受整数时,为什么不返回状态码400
? - 为什么当你input错误的login/密码时,几乎所有的Web应用程序都会返回一个类似于“身份validation失败”的消息,状态码为
200
(好的,没问题,你做得很好)401
?
是的, 状态码似乎是某些networking开发者的HTTP的一种秘密function……但是我想知道这个协议的所有“function”中最隐匿的东西是不是它的RFC !