HTTP是一种互联网上应用最广泛的网络协议,所有的WWW文件都必须遵守这个标准。它的设计目的是保证客户机和服务器之间的通信。
在客户机和服务器请求的过程中,用于交互的信息我们称之为HTTP报文,分为请求报文和响应报文。
请求报文包括请求行、请求头、空行、请求体;
- 以下是请求报文
POST /products/creat HTTP/1.1 (请求行,包括请求方法/url/HTTP协议及版本)
Host: 10.8.155.95:3333
Content-Length: 32
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Cache-Control: no-cache
Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
name: xiaobai
Postman-Token: 3b2fdd3e-fc98-942c-4c71-a517d04824d1
Content-Type: application/json
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive (请求头)
(空行)
{"name":"xiaohei","age":16} (请求体)
响应报文包括状态行、响应头、空行、响应体。
- 以下为响应报文
HTTP/1.1 200 OK (状态行,包括HTTP协议版本、状态码和状态描述)
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 40
ETag: W/"28-hhZqaX1+L6z2I4crOZ2ERE5/zmQ"
Date: Wed, 22 May 2019 12:11:50 GMT
Proxy-Connection: keep-alive (响应头)
(空行)
{"code":"success","info":"添加成功"} (响应体)
- 从安全角度来讲,GET请求查询字符串会显示在地址栏的网址中,所以不建议使用GET请求提交敏感数据,一般只用来获取数据;POST请求因为数据不会显示在地址栏中,也不会缓存下来或保存在浏览记录中,所以POST请求方式相对来说安全,但也不是最安全的方式。如需要传送敏感数据,必须使用加密方式传输。
- GET请求点击刷新页面没有太大影响,可以添加书签;而POST会重复提交数据,不能添加书签。
- GET请求数据类型有限制,只允许ASCII字符类型;POST请求数据类型没有限制,也可以是二进制数据,编码类型为application/x-www-form-urlencoded,支持的编码类型为application / x-www-form-urlencoded或multipart / form-data。