【计算机网络】HTTP协议中post和get的区别
GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据。
由于HTTP的规定和浏览器/服务器的限制,导致它们在应用过程中体现出一些不同。
操作 | GET | POST |
---|---|---|
后退按钮/刷新 | 无害 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 |
缓存 | 能被缓存 | 不能缓存 |
编码方式 | 只能进行url编码 | 支持多种编码方式 |
是否保留在浏览历史 | 参数保留在浏览器历史中 | 参数不会保存在浏览器历史中。 |
对数据长度的限制 | 发送数据,GET 方法向 URL 添加数据,但URL的长度是受限制的 | 无限制 |
对数据类型的限制 | 只允许 ASCII 字符 | 没有限制 也允许二进制数据 |
安全性 | 安全性较差,因为参数直接暴露在url中 | 因为参数不会被保存在浏览器历史或 web 服务器日志中 |
可见性 | 数据在 URL 中对所有人都是可见的 | 数据不会显示在 URL 中 |
传参方式 | get参数通过url传递 | post放在request body中 |
HTTP常见的头部
1、Accept:text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, image/apng, /; q=0.8
作用:向服务器申明客户端(浏览器)可以接受的媒体类型(MIME)的资源
解释:浏览器可以接受text/html、application/xhtml+xml、application/xml类型,通配符*/* 表示任意类型的数据。并且浏览器按照该顺序进行接收。( text/html —> application/xhtml+xml —> application/xml)
2、Accept-encoding: gzip, deflate, br
作用:向服务器申明客户端(浏览器)接收的编码方法,通常为压缩方法
解释:浏览器支持采用经过gzip,deflate 或 br 压缩过的资源
3、Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
作用:向服务器申明客户端(浏览器)接收的语言
解释:浏览器能够接受en-US, en 和 zh-CN 三种语言,其中 en-US 的权重最高 ( q 最高为1,最低为 0),服务器优先返回 en-US 语言
延伸:语言与字符集的区别:zh-CN 为汉语,汉语中有许多的编码:gbk2312 等
4、Cache-control: max-age=0
作用:控制浏览器的缓存,常见值为private、no-cache、max-age、alidate,默认为 private,根据浏览器查看页面不同的方式来进行区别
解释:浏览器在访问了该页面后,不再会访问服务器
5、Cookie:
作用:告诉服务器关于Session 的信息,存储让服务器辨识用户身份的信息。
6、Refer:https://www.baidu.com/xxxxxxxxxx
作用:告诉服务器该页面从哪个页面链接的
解释:该页面从https://www.baidu.com 中的搜索结果中点击过来的
7、Upgrade-insecure-requests:1
作用:申明浏览器支持从http 请求自动升级为 https 请求,并且在以后发送请求的时候都使用 https
解释:当页面中包含大量的http 资源的时候(图片、iframe),如果服务器发现一旦存在上述的响应头的时候,会在加载 http 资源的时候自动替换为 https 请求
8、User-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
作用:向服务器发送浏览器的版本、系统、应用程序的信息。
解释:Chrome 浏览器的版本信息为 63.0.3239.132,并将自己伪装成 Safari,使用的是 WebKit 引擎,WebKit伪装成 KHTML,KHTML伪装成Gecko(伪装是为了接收那些为Mozilla、safari、gecko编写的界面)
延伸:可以随便填(但不应该随便填)不过一般用于统计。
9、X-Chrome-UMA-Enabled、X-Client-Data :与 Chrome 浏览器相关的数据
Response Headers
HTTP状态码
状态码,100-199表示请求已收到继续处理,200-299表示成功,300-399表示资源重定向,400-499表示客户端请求出错,500~599表示服务器端出错
200:响应成功
302:跳转,重定向
400:客户端有语法错误
403:服务器拒绝提供服务
404:请求资源不存在
500:服务器内部错误
socket编程和HTTP协议
由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。
而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。
很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。,此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。
HTTP请求报文
1、请求方法
GET:请求获取Request——URL所标识的资源
POST:在Request——URL所标识的资源后附加资源
HEAD:请求获取由Request——URL所标识的资源的响应消息报头
PUT:请求服务器存储一个资源,由Request——URL作为其标识
DELETE:请求服务器删除由Request——URL所标识的资源
TRACE:请求服务器回送收到的请求信息(用于测试和诊断)
CONNECT:保留
OPTIONS:请求查询服务器性能
2、URL
URI全名为Uniform Resource Indentifier(统一资源标识),用来唯一的标识一个资源,是一个通用的概念,URI由两个主要的子集URL和URN组成。URL全名为Uniform Resource Locator(统一资源定位),通过描述资源的位置来标识资源。URN全名为Uniform Resource Name(统一资源命名),通过资源的名字来标识资源,与其所处的位置无关,这样即使资源的位置发生变动,其URN也不会变化。
3、协议版本
格式为HTTP/主版本号.次版本号,常用为:HTTP/1.1 HTTP/1.0
4、请求头部
Host:接受请求的服务器地址,可以是IP或者是域名
User-Agent:发送请求的应用名称
Connection:指定与连接相关的属性,例如(Keep_Alive,长连接)
Accept-Charset:通知服务器端可以发送的编码格式
Accept-Encoding:通知服务器端可以发送的数据压缩格式
Accept-Language:通知服务器端可以发送的语言
HTTP响应报文
1、协议版本,同请求报文
2、状态码,100-199表示请求已收到继续处理,200-299表示成功,300-399表示资源重定向,400-499表示客户端请求出错,500~599表示服务器端出错
200:响应成功
302:跳转,重定向
400:客户端有语法错误
403:服务器拒绝提供服务
404:请求资源不存在
500:服务器内部错误
3、响应头部
Server:服务器应用软件的名称和版本
Content-Type:响应正文的类型
Content-Length:响应正文的长度
Content-Charset:响应正文所使用的编码
Content-Encoding:响应正文使用的数据压缩格式
Content-Language:响应正文使用的语言
长连接与短连接
在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。
但从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
http与https的区别
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
【计算机网络】HTTP协议中post和get的区别相关推荐
- 浅析TCP协议中URG和PSH的区别与联系
浅析TCP协议中URG和PSH的区别与联系.URG:(紧急标志位)表示本报文段中发送的数据是否包含紧急数据.URG=1时,表示有紧急数据.后面的16位紧急指针字段只有在URG=1时才有效. URG:( ...
- C#的HTTP协议中POST与GET的区别
引言 HTTP协议我想任何IT人士都耳熟能详了,大家都能说出个所以然来.但是如果我问你HTTP协议的请求方法有哪些?POST与GET的差异?GET或POST传送数据量的大小有限制吗?HTTP响应的状态 ...
- HTTP协议中 GET 和 POST的区别(全)
目录 前言 1. 源码探讨 2. 区别 前言 在了解这两个的区别的同时 还需要额外补充一些http协议中其他方法以此了解更加深入 方法 描述 GET 请求指定的页面信息,并返回实体主体 HEAD 类似 ...
- AHB协议中hreadyout和hready_in的区别
AHB协议中slave的HREADYOUT和HREADYIN的区别 hreadyout:用于指示slave准备好接收master发过来的一笔传输: hreadyin:用于指示slave的上一笔传输是否 ...
- 【计算机网络】HTTP协议中Get与Post的区别
Get和Post的区别 1.get是从服务器上获取数据,post是向服务器上传数据. 2.get是把参数数据列加到提交表单的action属性所指的url中,值和表单内各个字段一一对应,在URL中可以看 ...
- 【转】HTTP协议中PUT和POST使用区别
有的观点认为,应该用POST来创建一个资源,用PUT来更新一个资源:有的观点认为,应该用PUT来创建一个资源,用POST来更新一个资源:还有的观点认为可以用PUT和POST中任何一个来做创建或者更新一 ...
- 计算机网络 latency,网络中delay和latency的区别
latency与delay是FPGA设计中常用到的两个概念. 1.概念区别: latency:等待:潜伏期:延迟.主要指时钟延迟,具体指的是输入数据与输出结果(该数据经过一系列处理之后的结果)之间的延 ...
- http协议中get和post的区别:
参考:http://hui.sohu.com/infonews/article/6337670107929509889 参考:https://www.cnblogs.com/yueyueyao/p/9 ...
- http协议中get和post的区别(转)
1.HTTP请求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP请求中, ...
最新文章
- 在职计算机答辩没有通过,在职研究生论文答辩没通过可以重新申请吗?
- java包名命名规范[【转】
- Acwing第 4 场周赛【未完结】
- Linux之数组和关联数组
- 反射的妙用-类名方法名做参数进行方法调用实例demo
- 在windows命令行中查询MySQL乱码
- mysql排序自段为字符串类型问题解决
- 二叉搜索树(Binary Search Tree)(Java实现)
- 凝结芽孢杆菌行业调研报告 - 市场现状分析与发展前景预测
- PHP User Agent
- 如果有人私信,吾看到后都会及时回答
- 二维码扫码支付实现方案(仅供自己参考)
- windows家庭中文版升级至专业版
- 89C51最小系统典型应用
- getDerivedStateFromProps填坑
- 两道2016年美国高中数学竞赛题
- 百家讲坛全集免费下载
- 一个php+ajax的在线匿名聊天室,PHP任意环境都可用,无需复杂配置,移动端电脑端互通流畅,随时随地聊个痛快~
- Interfacing with Pixhawk using the NSH
- Abbirb120型工业机器人_工控产品-ABB IRB120工业机器人-IRB120