1. HTTP:HyperTextTransferProtocol,超文本传输协议,是应用层面向对象的协议。

无状态:对于事务处理没有记忆功能,如果后面的请求需要前面的消息,必须重传才能实现。(可能会导致每次传送的数据量增大)

无连接:每次连接只处理一个请求,当服务器处理完客户的请求并收到客户端的应答之后,就断开连接。(可以节省传输时间)

2. HTTP的URI

格式:http://主机域名或者ip地址[:端口号]/路径

如果没有指定端口号,默认为80。在没有指定路径uri时,浏览器会自动处理成‘/’,如输入:www.xxx.edu.cn
浏览器自动转换成:http://www.xxx.edu.cn/

3. http请求

包括请求行,请求头部,请求正文。

请求行:包括请求方式Method、资源路径URI、协议版本Version;

请求头部:包括一些访问的域名、用户代理、Cookie等信息;

请求正文:就是HTTP请求的数据。

请求方法包括:

    POST: 在Request-URI所标识的资源后附加新的数据

    GET:请求获取Request-URI所标识的资源

     PUT     请求服务器存储一个资源,并用Request-URI作为其标识

     DELETE  请求服务器删除Request-URI所标识的资源

例如:在浏览器中输入网址的方式访问资源,浏览器采用的是GET方法向服务器获取数据

          POST方法要求被请求的服务器接受附在请求后面的数据,常用于提交表单。   

HTTP协议(以及get与post)

4. http响应

包括状态行,响应头部,响应正文

状态行:包括协议版本Version、状态码Status Code、回应短语;

响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;

响应正文:就是响应的具体数据。

状态码:

1xx 表示HTTP请求已经接受,继续处理请求
2xx 表示HTTP请求已经处理完成
3xx 表示把请求访问的URL重定向到其他目录
4xx 表示客户端出现错误
5xx 表示服务端出现错误

常见状态码的含义

        200---OK/请求已经正常处理完毕

        301---/请求永久重定向

        302---/请求临时重定向

        304---/请求被重定向到客户端本地缓存

        400---/客户端请求存在语法错误

        401---/客户端请求没有经过授权

        403---/客户端的请求被服务器拒绝,一般为客户端没有访问权限

        404---/客户端请求的URL在服务端不存在

        500---/服务端永久错误

        503---/服务端发生临时错误

HTTP协议(以及get与post)

5. GET 与 POST

区别(面试):

  • GET在浏览器回退时是无害的,而POST会再次提交请求。
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  • GET请求在URL中传送的参数是有长度限制的(最多1024字节),而POST没有。
  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  • GET参数通过URL传递,POST放在Request body中

其实,get与post本质上是没有区别的,是http协议中,发送请求的两种方法。

http是基于tcp/ip的关于数据如何在万维网中通信的协议,HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。两者可以以同样的方式实现(技术上可以支持,如可以在get的时候在request body中放数据,但是数据能不能被处理,就另说了),只不过正常情况下就像开始说的区别中那样。

GET和POST还有一个极为重要的区别:GET产生一个TCP数据包;POST产生两个TCP数据包

对于GET,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100(请求已接受,继续处理请求),浏览器再发送data,服务器响应200 (返回数据)。

 

 

相关文章: