POST 和 GET 的区别?
POST 和 GET 是什么?
POST 和 GET 是 HTTP 请求的两种方式, 都可实现将数据从浏览器向服务器发送带参数的请求.
HTTP 请求底层协议都是 TCP/IP, 所以两者没有本质的区别.
HTTP
HTTP 是什么
HTTP: 超文本传输协议. 所有的 WWW 文件都必须遵守这个标准.
HTTP 向服务器发送请求是 TCP 连接. HTTP 服务器收到请求后向客户端返回一个状态行 比如 "HTTP/1.1 200 OK" 和
HTTP 请求的组成
HTTP 由四部分组成:
请求行(request line): 用于说明请求类型, 要访问的资源路径, HTTP 版本号(GET /index.html HTTP/1.1)
请求头部(header): 用于说明服务器要使用的附加信息
一个空行
请求数据(body): 任意添加的数据
[图 1.1 HTTP 请求结构 图片来自 https://www.runoob.com/http/http-messages.html]
- eg:
- GET /books/?sex=man&name=Professional HTTP/1.1
- Host: www.wrox.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 /index.HTML HTTP/1.1 请求方法 url 协议 / 版本号
Host: localhost 主机地址
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 发送请求的应用程序名称
Accept: text/HTML,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5 通知服务端可以发送的语言
Accept-Encoding: gzip, deflate 通知服务端可以发送的数据压缩格式
- Connection: keep-alive
- Referer: <a target=_blank href="http://localhost/" style="color: rgb(51, 102, 153); text-decoration: none;">http://localhost/</a>
- Content-Length:25
- Content-Type:application/x-www-form-urlencoded
请求空行 标志着请求头结束, 请求正文 (请求体) 的开始
username=aa&password=1234
GET 方法
GET 是获取的意思, 顾名思义就是获取信息.
GET 是默认的 HTTP 请求方法.
GET 方法把参数通过 key/value 形式存放在 URL 里面, 如果参数是英文数字原样显示, 如果是中文或者其他字符加密(Base64)URL 长度一般有限制所以 GET 方法的参数长度不能太长. 由于参数显示再地址栏所以不安全, 一般需要保密的请求不使用 GET.
POST 方法
POST 是邮件的意思, 顾名思义就像一封信一样将参数放在信封里面传输. 它用于修改服务器上的数据, 一般这些数据是应该保密的, 就像信件一样, 信的内容只能收信的人看见. 例入当用户输入账号和密码登录时账号和密码作为参数通过 HTTP 请求传输到服务器, 这时候肯定不能用 GET 方法将账号密码直接显示再 URL 上, 这时候就应该用 POST 方法保证数据的保密性.
- PUT:
- HEAD
- DELETE
- ...
来源: http://www.bubuko.com/infodetail-3099832.html