HTTP的隐藏功能

时间:2009-06-05 08:52:00

标签: http

您认为哪些隐藏的HTTP功能值得一提?

隐藏的功能我的意思是已经成为标准的一部分但广泛相当未知或未使用的功能。

请为每个答案提供一个功能。

13 个答案:

答案 0 :(得分:123)

它必须是 418我是茶壶状态代码,是Hyper Text Coffee Pot Control Protocol(HTTP的扩展)的一部分。每次都让我开怀大笑。

  

2.3.2 418我是一个茶壶

     

任何尝试用茶壶冲泡咖啡都会导致错误     代码“418我是一个茶壶”。由此产生的实体可能很短     粗壮。

答案 1 :(得分:47)

事实referrer拼写错误,并决定应该保留拼写错误。

答案 2 :(得分:42)

明显答案:PUT,DELETE,TRACE,OPTIONS,CONNECT方法

大多数人都知道GET和POST方法,因为这是他们在构建表单时使用的方法。浏览器也经常使用HEAD。其他方法则鲜为人知;它们主要用于更具体的应用程序。

答案 3 :(得分:29)

有没有人见过 402 Payment Required

答案 4 :(得分:25)

204无内容

我认为204就是你没有要显示的内容,但是spec看起来还有其他行为,即用户代理“不会更改其文档视图。”

根据HOWTO: Configure Apache to Return a HTTP 204 (No Content) for AJAX

  

FWIW,谷歌实际上做了一些事情   类似。每次用户点击一次   在他们的搜索结果中链接Google   ping自己记录点击;该   ping的响应代码是HTTP   204。

此外,204 No Content建议如果你想节省网络流量的每一个字节,这对于“网络错误”或“信标”来说是一种很好的技术。

答案 5 :(得分:17)

Response Code 410 Gone

  

(...)服务器所有者希望远程   删除该资源的链接。 (...)

网络蜘蛛(最着名的是谷歌)将取消索引(通常在下次抓取时)一个开始返回410的页面。

答案 6 :(得分:16)

在动态内容中使用Last_Modified或ETag标题

有时,您生成的动态内容可能很大且成本较高,而且可能不会因请求而发生变化。您可以将Last_Modified或ETag标头添加到生成的响应中。

在昂贵的动态代码的顶部,您可以使用If_Modified_Since或If_None_Match来确定内容请求者是否仍然是当前的。如果它将响应状态更改为“304未修改”并结束请求。

某些服务器端技术正式提供此类功能,但即使在低级ASP-Classic中也可以执行上述操作。

请注意,这与设置Cache-Control,Expires标头的不同之处在于它确保客户端始终根据请求提供最新信息。

答案 7 :(得分:13)

您可以使用分别指定字节范围和唯一文件的RangeIf-Range请求标头请求恢复(大型)HTTP响应(例如文件下载)标识符或文件修改时间戳。如果服务器分别在初始响应上发送了Accept-Ranges: bytesETagLast-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

答案 8 :(得分:12)

ReST尝试将HTTP作为接口协议推向极限。

它不是隐藏功能,但是通过查看定义明确的ReST API,可以很好地掌握HTTP的工作方式并找到可以通过简单实现的内容的精彩示例HTTP方法,状态代码和来回的组合。

答案 9 :(得分:9)

Trailer(与标题相反)

答案 10 :(得分:8)

该协议允许您定义自己的自定义字段。如果您不想使用cookie,这些信息可用于携带其他信息。

答案 11 :(得分:6)

HTTP 100(继续)状态

客户端可以发送请求主体的请求消息,以确定源服务器是否愿意接受请求。

在某些情况下,如果服务器拒绝邮件而不查看正文,则客户端发送正文可能不合适或效率极低。

可用于避免流量来自恶意客户端..和/或带宽是宝贵的商品。

但是,为了充分利用此功能,HTTP1.1客户端,服务器和代理有一些标准。有关HTTP连接的详细信息,请参阅HTTP/1.1 RFC 2616

答案 12 :(得分:3)

Status codes

  • 当调用URI http://www.domain.invalid/index.php?id=44时,如果queryid=44)无法返回资源,为什么不返回状态代码404?< / LI>
  • 调用URI http://www.domain.invalid/index.php?id=fooid只接受整数时,为什么不返回状态代码400
  • 为什么,当您输入错误的登录名/密码时,几乎所有的Web应用程序都会返回消息,例如“身份验证失败”,状态代码为200(好吧,没问题,你这样做那么401
  • 的instade

是的,status codes似乎是某些网络开发人员HTTP的一种秘密功能......但我想知道这个协议的所有“功能”中最神秘的是不是its RFC