HTTP

一、啥是HTTP?为毛会有它

http 全称 hypertext transfer protocol  (超文本传输协议,强烈建议以后把相关词汇的英语记熟是基于tcp协议的面向连接的安全可靠的应用层网络传输协议。创建的初衷是为了接收和发布html格式信息,其请求方式是客户端通过url来发送请求和获取响应,也就是说http是一种只能实现客户端发送,服务端响应的tcp/ip协议(这就和websocket等协议不同,因为这些协议是可以由服务端来主动发送报文的)。

二、特点

1.基于请求/响应模型的协议。请求和响应必须成对,先有请求后有响应

2.http协议默认端口:80

3.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

4.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

5.无连接 (注意不是面向无连接):无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

6.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

三、状态码

状态码:发送请求后,服务端会有响应,响应的类型对应一个状态码,由3位数字组成,第一个数字定义了响应的类别

1xx:指示信息,表示请求已接收,继续处理

2xx:成功,表示请求已被成功接受,处理。

  1. 200 OK:客户端请求成功
  2. 204 No Content:无内容。服务器成功处理,但未返回内容。一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况。不会刷新页面。
  3. 206 Partial Content:服务器已经完成了部分GET请求(客户端进行了范围请求)。响应报文中包含Content-Range指定范围的实体内容

3xx:重定向

  1. 301 Moved Permanently:永久重定向,表示请求的资源已经永久的搬到了其他位置。
  2. 302 Found:临时重定向,表示请求的资源临时搬到了其他位置
  3. 303 See Other:临时重定向,应使用GET定向获取请求资源。303功能与302一样,区别只是303明确客户端应该使用GET访问
  4. 307 Temporary Redirect:临时重定向,和302有着相同含义。POST不会变成GET
  5. 304 Not Modified:虽然304被划分在3XX,但和重定向一毛钱关系都没有。表示客户端发送附带条件的请求(GET方法请求报文中的IF…)时,条件不满足。返回304时,不包含任何响应主体,比如请求路径在本地已经缓存过,直接本地获取。

4xx:客户端错误

  1. 400 Bad Request:客户端请求有语法错误,服务器无法理解。
  2. 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
  3. 403 Forbidden:服务器收到请求,但是拒绝提供服务
  4. 404 Not Found:请求资源不存在。比如,输入了错误的url
  5. 415 Unsupported media type:不支持的媒体类型

5xx:服务器端错误,服务器未能实现合法的请求。

  1. 500 Internal Server Error:服务器发生不可预期的错误。
  2. 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,

四、请求报文结构:

请求消息(Request Message):客户端向服务器发送的请求消息,具体图片如下:

 请求消息包括三部分:


1、请求起始行

  1. 请求方法
    1. GET :表示客户端向获取服务器上的资源(img/js/..),无请求主体 ,依靠地址栏传递数据给服务器
    2. POST:表示客户端想传递数据给服务器,有请求主体
    3. PUT: 表示客户端想把文件放到服务器上(禁用),有请求主体
    4. DELETE:表示客户端想删除服务器上指定的文件(禁用)                    
    5. HEAD:  表示只想获取指定 的响应头               
    6. CONNECT:  测试连接              
    7. TRACE:  追踪请示路径              
    8. OPTIONS:  选项,保留以后使用...
  2. 请求URL
  3. 协议 和 版本号 :HTTP / 1.1

2、请求头

  1. Host:localhost :告诉服务器请求哪一个虚拟主机
  2. Connection:keep-alive:告诉服务器做持久连接
  3. User-Agent; 告诉服务器,客户端浏览器的类型
  4. Cache-Control:max-age=0;: 告诉服务器缓存信息,max-age,即不缓存
  5. Accept-Language : zh-CN :告诉服务器自己能接收的自然语言
  6. Accept-Encoding:gzip:告诉服务器自己可以接收的压缩类型
  7. Referer: url  :告诉服务器请求来自于哪个页面    

3、请求体

  1. Form Data :  是真正的请求主体 

      

五、响应报文结构

响应消息(Response Message ): 服务器端根据客户端的请求消息,返回给客户端的响应消息。图片如下:

http协议—响应报文格式


1、响应起始行

  1. 协议版本号:  HTTP / 1.1           
  2. 响应状态码
    1. 1-100: 提示信息
    2. 2-200:服务器端成功响应所有的信息 OK
    3. 3-300:需要客户端进行重定向301 :
      1. 永久性重定向
      2. 302 :临时重定向
      3. 304 :Not Modified
    4. 4-400:客户端请求错误
      1. 404 :Not Found,请求资源不存在
      2. 403 :Forbidden,没有访问权限
      3. 405 :Method Not Allowed,请求方法不被允许             
    5. 5-500:服务器运行错误
      1. 500 :服务器内部错误
      2. 501 :没有实现         

      3. 原因短句:对状态码的简单解释

               200 : OK
               404 : Not Found

 2、响应消息头:

  1. Content-Type:
    1. 响应的主体类型,告诉浏览器,响应的数据时什么格式以及什么类型的
  2. 取值:
    1. text/plain:纯文本,告诉浏览器按纯文本的方式解析
    2. text/html:文本与网页,告诉浏览器按html的格式解析内容   
    3. text/css:样式,告诉浏览器按 css 的方式解析 
    4. application/javascript:JS代码片段,按JS的方式运行数据   
    5. application/xml: 按 xml 的方式解析
    6. application/json: 按 json 的方式解析

3、响应体:

  1. 服务器响应信息

六、缓存

缓存的作用:可以让客户端自动保存已经访问过的文档副本,这些内容会被key-value的格式被存储,当客户端再次访问同一个URL时,就会将其作为key来获取本机存储的对应value,不用再重新发送请求

 缓存优点:
        1、减少了冗余的数据传输,节省流量
        2、缓解服务器带宽瓶颈的问题,服务器可以节省更多的带宽
        3、降低了对服务器的资源消耗和运行要求
        4、降低了由于远距离而造成的加载延迟

与缓存相关的消息头
        

  1. Cache-Control:从服务器将文档传来之时起,认为新鲜的秒数  :  取值:秒数 60 / 3600 / ... ... 如果取值为 0 / no-cache,表示每次都要重新刷新网页
  2. Expires:  明确指定缓存的过期时间,取值是格林尼治标准时间(GMT) : Expires:Fri,25 Aug 2017,08:00:00 GMT, Expires:0 表示不需要缓存

如何在HTML网页中设置消息头 

  1.  http-equiv :指定消息头的名称
  2.   content :指定消息头对应的内容

例子展示:

本文参考:https://blog.csdn.net/fjxcsdn/article/details/85754488

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值