简介
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。
我们把Http协议中通信的两方称作Client和Server关系如图(1):
URL详解
scheme:指定底层使用的协议(例如:http,https,ftp)
host:HTTP服务器的IP地址或者域名
port#:HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明
path:访问资源的路径
url-params:url参数
query-string:发送给http服务器的数据(?后面)
anchor:锚,用于页面定位
http协议是无状态协议
原理:同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自一个客户端。无状态是指协议对于事务没有记忆能力,服务器不知道客户端是什么状态。从另一个方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。
解决方案:Cookie机制来维护
Http消息结构
Request消息的结构:三部分
请求行:http请求种类,请求资源路径,http协议版本
http header:http头部信息(后面文章后更新这块内容)
body:发送给服务器query-string的信息
当使用的是"GET"方法的时候,body是为空的
Response消息的结构
请求行:协议版本,状态码,message
request header:request头信息
body:返回的请求资源主体
get和post的区别
1.GET提交的数据会放在URL之后,以?分割URL和传输数据,参数见以&相连;POST方法是把提交的数据放在HTTP包的Body中
2.GET提交的数据大小有限制;POST方法提交的数据没有限制
3.GET方式需要使用Request.QueryString来获取变量的值;POST通过Request.From来获取变量的值
4.GET方式提交数据,会带来安全问题