Http 协议 和 GET、POST 请求
2017-10-18 本文已影响0人
loyehu
Http的理解:
一、Http 的概念:
超文本传输协议(HTTP HyperText Transfer Protocal),是简单、可靠的互联网文件传输协议。
"Http" 是一个属于应用层的面向对象的协议,简便,快捷,适用于分布式超媒体信息系统。
【注】 1. HTTP的传输,不是一个文件整体传输,而是把一个大的文件,分成一个个报文(message),然后传输的。所以我们的浏览器渲染页面,一块一块加载的,图片是一条一条显示的。的确,一个JPG图片,也是通过多个报文回来的。每个报文都会进行校验,保证这个报文里面的内容是准确的、和服务器一致的。所以HTTP是可靠的,文件不会发生任何偏差。
2. HTTP是无连接的,就是你访问一个网站,此时可能产生多个HTTP请求,请求HTML页面、请求JPG图片、请求外链css样式表,这些请求走过的路线,可以不一致。也就是说,没有和服务器有一个持久的通路,你的每次请求HTTP完成之后,请求就关闭了,一个页面要多次打开、关闭HTTP。
二、Http 协议的主要特点有:
- 支持客户端 / 服务端模式,即请求(request)- 响应(response)模式(你请求我回应你,你不请求,我不理你);
- 简单快速,客户端向服务端发送请求时,只需要传送请求方式和路径即可,所以简单,由于http协议简单, 使得http服务器的程度规模小,因而速度很快;
- 灵活,传输数据类型种类多;
- 无连接,请求一次服务器后立刻断开连接,即非长连接,即短连接。
例:微博 - 请求一次之后,不能持续不断更新;
解决办法:添加定时器,不断地去请求;
h5内容: webSocket 长连接,可以一直连接请求 - 无状态:HTTP 协议对事务处理没有记忆能力;session
三、Http协议的请求方式:
GET、POST、HEAD、PUT、DELETE等
四、Http包含:
请求头(RequestHeader) 和 请求体
【请求头】(说明信息,例如:文档编码、数据格式、时间。。。)
【请求体】(数据 传输给服务器的数据)
响应头(ResponseHeader) 和 响应体
五、Http协议中,状态码:
- 请求服务的模式
- 无状态的(每次请求都不相同),在每一次的请求结果在中,返回当前
状态码:
200:【正常】返回,表示请求成功;
302:文件临时移动;
304:not modified,文件没有改变。浏览器会比对你请求的文件,和已经在缓存文件夹中的文件,如果相同,不在请求。这就是为什么第二次访问网站,速度更快的原因。
400:语法错误导致服务器不识别;
401:没有权限;
403:服务器缓存;
404: not found找不到服务器中的资源;
500:服务器故障;
502:错误的访问;
503:由于服务器过载或维护导致无法完成请求
GET、POST 请求:
在通过Http协议向服务器请求的过程中,有两种最常用的请求方式,分别是:GET 和 POST 请求方式;在ajax的使用过程中,GET的使用频率又要比POST高的多。
一、GET 请求:
GET请求常用于向服务器获取数据,也可以将少量字符串参数提交给服务器:
xhr.open("GET" ,"http://localhost:8080/ajax/football?pageNo=1&pageCount=10",true);
【用途】向服务器传递数据:pageNo(表示页码,后端规定的);pageCount=10(表示每一页所显示的内容个数,也是后端规定的);
通过URL后的问号?给服务器传递键值对数据,服务器接收请求后,可以从中获取到对应的数据,向服务器提交数据的格式:
格式:
地址?参数1=值1&参数2=值2&参数3=值3
【注意】地址后面只能跟问号,而且?必须是(英文状态下的);参数之间只能用&符号链接,其他符号都不可以;中间不能加空格或其他字符。
二、POST 请求:
POST 请求可以包含非常多的数据,我们在使用表单提交数据的时候,很多就使用的POST方式提交的;
xhr.open("POST","http://localhost:8080/ajax/football",true);
POST 请求向服务器发送的数据,不会跟在URL后面,而是通过 send( )方法向服务器提交数据;
xhr.send("name=loye&age=21");
POST 请求和web表单提交不同,需要使用 XHR 来模仿表单提交;
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
【注】固定模式,直接引用
三、GET 请求 和 POST 请求 的区别:
从性能上来讲POST请求比GET请求消耗更多一些,用相同数据比较,GET最多比POST快两倍。这也是GET请求的使用率大于POST请求的原因;
【GET 和 POST 的共同点】都是向服务器请求数据的方式;
【GET 和 POST 的区别】
1. GET:数据放在地址栏后?数据(reg=123&psw=123);数据量小;安全性低;传输速度快;
2. POST:send(数据参数);数据量大;安全性高;传输速度慢;