最近没有更新是因为,时间比较紧张,另外,这几章比较繁琐,还是硬着头皮上吧,不然,老放在心里面,不踏实,而这几张是非常重要的几张,包括:方法、状态码、cache。
月份:2012年4月
HTTP/1.1之连接(第八章)
HTTP/1.1之连接(第八章)
8.1 持久性连接
目的:
在以前,没有持久性连接的时候,为了获取每一个URL都要进行一次TCP连接,这显然加重了服务器的负担,容易引起互联网的堵塞,因为你要多次进行三次握手,尤其是页面里面有很多内联的图片、css样式表、js文件时候,简直让人崩溃。所以,持久连接有以下特点:
HTTP/1.1阅读之信息实体
7 信息主体
信息主体是由信息头和信息主体两部分组成的,除非被Status-code或是请求方法限制了,导致没有信息主体(为空)。我们在这章讨论的时候,发送和请求是辩证唯物的。当客户端请求服务器的时候,客户端是发送方,而服务器是接收方,但是服务器返回信息的时候,服务器是发送方,而客户端则是接收方。
entity-header = Allow ; Section 14.7
| Content-Encoding ; Section 14.11
| Content-Language ; Section 14.12
| Content-Length ; Section 14.13
| Content-Location ; Section 14.14
| Content-MD5 ; Section 14.15
| Content-Range ; Section 14.16
| Content-Type ; Section 14.17
| Expires ; Section 14.21
| Last-Modified ; Section 14.29
| extension-header
extension-header = message-header 以上实体部分,有些选项是可选的,有些则是必须的。其中的extension-header可以不用升级协议版本就可以扩展信息主体,但是你不能期望人家 接收方能够正确的识别,如果对方识别不了,这个扩展区将被忽略,但是代理转发的时候,你不能随意的忽略这个扩展区,这很好理解,因为你是代理 你又不知道人家接收方能不能识别这个扩展信息。
entity-body = *OCTET 如果实体存在的话,他的编码方式是在信息头域的Transfer-Encoding来决定的,这东西就是用来保证信息能够被正确的传输。 如果实体信息存在的话,他们会由头域的Content-Encoding和Content-Type来确定的,这些头域定义了两层顺序的编码模型,例如:
entity-body := Content-Encoding( Content-Type( data ) ),其中前者一般用于定义使用了什么压缩方式,而后者type表示请求的是什么类型 如果没有指定,他就会去猜,实在猜不到就application/octet-stream这样了 实体信息的长度是编码前的长度,4.4节已经定义了,如果去确定信息的长度。
HTTP/1.1阅读之响应
HTTP/1.1阅读之请求
5.1 请求消息的构成
在上一章,我们知道一个请求的消息应该由以下几部分组成:
Request = Request-Line ; Section 5.1
*(( general-header ; Section 4.5
| request-header ; Section 5.3
| entity-header ) CRLF) ; Section 7.1
CRLF
[ message-body ] ; Section 4.3
他们是请求头(由请求行、一般头、请求头和信息头)+信息主体构成。我们来看看请求行(Request-Line),他是由下面几部分构成的:
Method sp URI sp HTTP-Version CRLF,我们来像教科书一样,看看各个部分都是干啥的
慎用preg_replace的/e修饰符
最近,wooyun上面爆了一个ThinkPHP的漏洞(最新版已经修复),以前也是我用过的第一个框架,昨晚花时间重现了一下,查阅了下程序的原理,原来这东西还得慎用。主要是由mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) 这个函数引起的,在官方说明中,
/e 修 正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。提示:要确 保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错 误。
HTTP/1.1之消息
4.1 消息类型
消息的类型分为:请求消息和响应消息。 HTTP-message = Request | Response ; HTTP/1.1 messages,任何类型的消息都是由开始行,0个或是多个头域,一个空行(CRLF)用来终止头信息,消息实体(也可能没有)。
HTTP/1.1阅读第2~3章
2 符号习惯和一般语法
Apache的日志
为了有效的管理网站,日志是必须的。apache的日志包含access日志和错误日志。前者有助于重现用户的访问情景,来分析用户的行为,后者用于网站的错误判读。
HTTP/1.1协议阅读-第一章
我将逐渐完成http/1.1协议的阅读,在此期间,为了加深记忆,会写成一个系列的文章,文中所述,以个人理解为主,以英文为准,尽量靠近原文档,原因是,下载了一个中文版的,读起来发现很别扭,感觉像是从Google翻译,直接翻译过来的,不知所云。
先强制性的翻译几章,熟悉之后,希望能够加快阅读速度,今天先进第一章。