天天看點

http協定解析http協定

http协议

Hyper Text Transfer Protocol 超文本传输协议。

特点
  • 基于TCP/IP的高级协议
  • 默认端口号:80
  • 基于请求/响应模型的:一次请求对应一次响应
  • 无状态的:每次请求之间相互独立,不能交互数据

什么是协议

双方在交互、通讯的时候, 遵守的一种规范、规则。

http协议

客户端与服务器端在执行http请求的时候,遵守的一种规范。

其实就是规定了客户端在访问服务器端的时候,要携带些东西**, 服务器端返回数据的时候,要返回东西。

版本

1.0

请求数据,只能获得一个web资源,服务器返回后, 将会断开连接。
           

1.1

请求数据,服务器返回后, 连接还会保持着。 除非服务器 | 客户端 关掉。 有一定的时间限制,如果都空着这个连接,那么后面会自己断掉。
           

Http请求数据解释

请求的数据里面包含四个部分内容 : 请求行 、 请求头 、空行、请求体

  • 请求行

    POST /examples/servlets/servlet/RequestParamExample HTTP/1.1

    POST : 请求方式 ,以post去提交数据
    	
    /examples/servlets/servlet/RequestParamExample
    请求的地址路径 , 就是要访问哪个地方。
    
    HTTP/1.1 协议版本
               
  • 请求头

    Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, /

    Referer: http://localhost:8080/examples/servlets/servlet/RequestParamExample

    Accept-Language: zh-CN

    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

    Content-Type: application/x-www-form-urlencoded

    Accept-Encoding: gzip, deflate

    Host: localhost:8080

    Content-Length: 31

    Connection: Keep-Alive

    Cache-Control: no-cache

    Accept: 客户端向服务器端表示,我能支持什么类型的数据。 
    Referer : 真正请求的地址路径,全路径
    Accept-Language: 支持语言格式
    Cache-Control : 对缓存的操作,缓存控制
    User-Agent: 用户代理 向服务器表明,当前来访的客户端信息。 
    Content-Type: 提交的数据类型。经过urlencoding编码的form表单的数据
    Accept-Encoding: gzip, deflate : 压缩算法 。 
    Host : 主机地址
    Content-Length: 数据长度
    Connection : Keep-Alive 保持连接
               
  • 请求体
浏览器真正发送给服务器的数据

发送的数据呈现的是key=value ,如果存在多个数据,那么使用 &

firstname=zhang&lastname=sansan

Http响应数据解析

响应的数据里面包含三个部分内容 : 响应行 、 响应头 、响应体
HTTP/1.1 200 OK    	200是status状态码  设置响应行就是设置status
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 673
Date: Fri, 17 Feb 2017 02:53:02 GMT

...这里还有很多数据...
           
  • 响应行

    HTTP/1.1 200 OK

    协议版本  状态码 这次交互到底是什么样结果的一个code. 
    
    200, "OK" 		 			成功,正常处理,得到数据。
    201, "Created" 				(已创建)请求成功并且服务器创建了新的资源。
    204, "No Content"	  		成功,无内容更新
    400, "Bad Request"  		错误请求	
    401, "Unauthorized"			未认证
    403, "Forbidden"			禁止
    404, "Not Found"			资源未找到
    500, "Internal Server Error"内部服务器错误 
               
  • 响应头

    Server: 服务器是哪一种类型。 Tomcat

    Content-Type : 服务器返回给客户端你的内容类型

    Content-Length : 返回的数据长度

    Date : 通讯的日期,响应的时间

  • 响应体:是服务器返回给客户端的文本信息。
    Accept:告诉浏览器,它所支持的数据类型
    Accept-Encoding:支持哪种编码格式  GBK   UTF-8   GB2312  ISO8859-1
    Accept-Language:告诉浏览器,它的语言环境
    Cache-Control:缓存控制
    Connection:告诉浏览器,请求完成是断开还是保持连接
    HOST:主机..../.
    Refresh:告诉客户端,多久刷新一次;
    Location:让网页重新定位;
               

Get 和 Post请求区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dqy9Qn10-1614758443863)(img/img04.png)]

post

  • 数据是以流的方式写过去,不会在地址栏上面显示。 现在一般提交数据到服务器使用的都是POST。
  • 以流的方式写数据,数据没有大小限制。

get

  • 会在地址栏后面 ?拼接数据,所以有安全隐患。 一般从服务器获取数据,并且客户端也不用提交上面数据的时候,可以使用GET。
  • 能够带的数据有限, 1kb大小