Http 协议 和 GET、POST 请求

Http的理解:

一、Http 的概念:

超文本传输协议(HTTP HyperText Transfer Protocal),是简单、可靠的互联网文件传输协议。

"Http" 是一个属于应用层的面向对象的协议,简便,快捷,适用于分布式超媒体信息系统。

【注】 1. HTTP的传输,不是一个文件整体传输,而是把一个大的文件,分成一个个报文(message),然后传输的。所以我们的浏览器渲染页面,一块一块加载的,图片是一条一条显示的。的确,一个JPG图片,也是通过多个报文回来的。每个报文都会进行校验,保证这个报文里面的内容是准确的、和服务器一致的。所以HTTP是可靠的,文件不会发生任何偏差。
2. HTTP是无连接的,就是你访问一个网站,此时可能产生多个HTTP请求,请求HTML页面、请求JPG图片、请求外链css样式表,这些请求走过的路线,可以不一致。也就是说,没有和服务器有一个持久的通路,你的每次请求HTTP完成之后,请求就关闭了,一个页面要多次打开、关闭HTTP。

二、Http 协议的主要特点有:

  1. 支持客户端 / 服务端模式,即请求(request)- 响应(response)模式(你请求我回应你,你不请求,我不理你);
  2. 简单快速,客户端向服务端发送请求时,只需要传送请求方式和路径即可,所以简单,由于http协议简单, 使得http服务器的程度规模小,因而速度很快;
  3. 灵活,传输数据类型种类多;
  4. 无连接,请求一次服务器后立刻断开连接,即非长连接,即短连接。
    例:微博 - 请求一次之后,不能持续不断更新;
    解决办法:添加定时器,不断地去请求;
    h5内容: webSocket 长连接,可以一直连接请求
  5. 无状态:HTTP 协议对事务处理没有记忆能力;session

三、Http协议的请求方式:

  GET、POST、HEAD、PUT、DELETE等

四、Http包含:

    请求头(RequestHeader) 和 请求体
        【请求头】(说明信息,例如:文档编码、数据格式、时间。。。)
        【请求体】(数据 传输给服务器的数据)
    响应头(ResponseHeader) 和 响应体

五、Http协议中,状态码:

  1. 请求服务的模式
  2. 无状态的(每次请求都不相同),在每一次的请求结果在中,返回当前
    状态码:
    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(数据参数);数据量大;安全性高;传输速度慢;

你可能感兴趣的:(Http 协议 和 GET、POST 请求)