您认为HTTP的哪些隐藏功能值得一提?
所谓隐藏特征,是指已经成为标准的一部分,但广泛为未知或未使用的特征。
请每个答案一个功能。
Answers:
它必须是418我是茶壶状态码,是超文本咖啡壶控制协议(HTTP的扩展)的一部分。让我每次都笑。
2.3.2 418我是茶壶
任何尝试用茶壶冲泡咖啡的尝试都将导致错误代码“ 418我是茶壶”。生成的实体主体可能短而结实。
这一事实引用拼写错误,并决定了拼写错误应保持。
显而易见的答案:PUT,DELETE,TRACE,OPTIONS,CONNECT方法
大多数人都知道GET和POST方法,因为这是他们在构建表单时使用的方法。浏览器也经常使用HEAD。其他方法鲜为人知。它们主要由更特定的应用程序使用。
我以为204只是没有内容可显示,但该规范似乎还有其他行为,即用户代理“不更改其文档视图”。
根据HOWTO:将Apache配置为返回AJAX的HTTP 204(无内容)
FWIW,Google实际上做了类似的事情。每次用户点击搜索结果中的链接时,Google都会对其自身进行ping操作以记录该点击;ping的响应代码是HTTP 204。
同样,《204 No Content》提出,如果您想节省网络流量的每个最后字节,这对于“网络错误”或“信标”来说是一种很好的技术。
在动态内容中,使用Last_Modified或ETag标头
有时您会生成动态内容,这些内容可能很大且/或成本很高,并且可能因请求而异。您可以将Last_Modified或ETag标头添加到生成的响应中。
在昂贵的动态代码的顶部,您可以使用If_Modified_Since或If_None_Match来确定内容请求者是否仍然是当前的。如果是,则将响应状态更改为“ 304未修改”,并结束请求。
某些服务器端技术正式提供了此类功能,但是即使在低ASP-Classic中,您也可以执行上述操作。
注意,这与设置Cache-Control,Expires标头不同,因为它可以确保客户端始终根据请求提供最新信息。
您可以使用和请求具有指定字节范围和唯一文件标识符或文件修改时间戳的标头,请求恢复(大)HTTP响应(例如,文件下载)。如果服务器发送了和或Range
If-Range
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
预告片(与标题相反)
HTTP 100(继续)状态
客户端可以发送带有请求正文的请求消息,以确定原始服务器是否愿意接受请求。
在某些情况下,如果服务器将客户端发送正文,则可能不合适或效率很低 在不查看正文的情况下拒绝邮件。
可用于避免来自流氓客户端的流量。带宽是宝贵商品的情况下。
但是,为了充分利用此功能,HTTP1.1客户端,服务器和代理有一些条件。有关HTTP连接的更多信息,请参见HTTP / 1.1 RFC 2616。
状态码:
http://www.domain.invalid/index.php?id=44
被调用时,如果查询(id=44
)无法返回的ressource,为什么不返回一个状态码404
?http://www.domain.invalid/index.php?id=foo
而id
仅接受整数时,为什么不返回状态码400
呢?200
(好的,没问题,您做得很好)401
?是的,对于某些Web开发人员来说,状态码似乎是HTTP的一种秘密功能……但是我想知道该协议所有“功能”中最隐秘的不是它的RFC!
401
仅适用于HTTP身份验证,而不适用于其他种类。Afaik导致大多数浏览器向用户询问http密码。
HTTP-Authentication
... ^^使用它而不是重新发明轮子真的很难吗?
.htaccess
文件)中,都具有很大的不同。网站管理员可以更新。因此,HTTP身份验证实际上并不非常适合管理应用程序的用户权限和登录/注销。
HTTP-Authentication
,甚至PHP也能够处理HTTP-Authentication
(php.net/manual/en/features.http-auth.php)。如果您是Web开发人员,则仅出于安全原因,您必须了解服务器管理的基础知识!由于Web开发人员必须具有网站管理员/系统管理员技能,因此他可以轻松地执行此任务。