目录
HTTP 的特性:http是基于TCP/IP上的协议层。
①HTTP 协议构建于 TCP/IP 协议之上,是一个应用层协议,默认端口号是 80 .
②HTTP 是无连接无状态的.
③HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。
GET,POST,
PUT,
DELETE
:
规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样:
HTTP 定义了与服务器交互基本方法
HTTP 定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET
,POST
,PUT
,DELETE
。
URL
全称是资源描述符,我们可以这样认为:一个URL
地址,它用于描述一个网络上的资源,而 HTTP 中的GET
,POST
,PUT
,DELETE
就对应着对这个资源的查,增,改,删4个操作。
-
GET 用于信息获取,而且应该是安全的 和 幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。
GET 请求报文示例:
GET /books/?sex=man&name=Professional HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Connection: Keep-Alive
-
POST 表示可能修改变服务器上的资源的请求。
POST / HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Content-Type: application/x-www-form-urlencoded Content-Length: 40 Connection: Keep-Alive sex=man&name=Professional
-
注意:
- GET 可提交的数据量受到URL长度的限制,HTTP 协议规范没有对 URL 长度进行限制。这个限制是特定的浏览器及服务器对它的限制
- 理论上讲,POST 是没有大小限制的,HTTP 协议规范也没有进行大小限制,出于安全考虑,服务器软件在实现时会做一定限制
- 参考上面的报文示例,可以发现 GET 和 POST 数据内容是一模一样的,只是位置不同,一个在 URL 里,一个在 HTTP 包的包体里
POST 提交数据的方式
HTTP 协议中规定 POST 提交的数据必须在 body 部分中,但是协议中没有规定数据使用哪种编码方式或者数据格式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 PHP、Python 等,以及它们的 framework,都内置