@lizlalala
2016-09-11T12:36:46.000000Z
字数 1304
阅读 1325
http
请求报文:
GET /index.htm HTTP/1.1
Host: hackr.jp
响应报文
http 不保存状态(stateless)
但实际中,需要保持状态,比如用户登录信息,这个时候利用cookie等。
http方法
put:传输文件,状态码如204,表示该文件已经存在于服务器上。
由于HTTP1.1中的put方法自身不带验证机制,任何人都可以上传文件,存在安全问题。一般网站不使用该方法,除非有自定义的验证机制/rest标准设计。
put是幂等的。
HEAD(同get,但不返回报文主体内容,用于确认URI有效性及资源更新的内容),
DELETE:删除文件,同put一样,不安全,响应:204(no content)
TRACE: 讲之前的请求通信环回给客户端。
持久连接
最开始的时候,每请求(指http)一次就要断开tcp再新建一次连接(包括,tcp三次握手建立连接,请求,响应,四次握手断开tcp连接)。开销太大。(比如一个html中还有图片资源,这个也是请求。)
为解决上述问题,提出了持久连接。(只要一方不提出断连,就一直保持tcp连接,可以多个http请求。)
http1.1默认持久连接,但1.0不是
引申:使得pipeline成为可能,多个请求可以并行发送。
cookie
第一次客户端请求后,服务端生成cookie,要求客户端set cookie,然后下次客户端请求时便会自动加入cookie信息,服务端再根据这个进行判别。服务端仍然是无状态的。
请求报文
三部分:
内容协商以返回最合适的内容
比如访问macy.com,梅西百货,它会根据浏览器的默认语言,返回相应的web页面,如中文版。
以相应资源的字符集、编码方式、语言作为判断的基准。