HTTP小常识

HTTP简介:

  1. HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,适用于从万维网服务器传输超文本到本地浏览器的传送协议;
  2. HTTP是一个基于TCP/IP协议来传递数据(HTML文件、图片、查询结果等);

HTTP工作原理:

  1. HTTP协议工作于C/S架构(客户端-服务器)为上,浏览器作为HTTP客户端通过URL向HTTP服务器即WEB服务器发送所有请求;
  2. HTTP三点注意事项:

    i. HTTP是无连接:无连接的含义是限制每次连接只处理一个请求;服务器处理完客户端的请求,并收到客户端的应答后,即断开连接,采用这种方式可以节省传输时间

    ii.HTTP是媒体独立的:只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送;客户端以及服务器指定使用适合的MIME-type内容类型;

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

  3. 以下图展示了HTTP协议通信的流程:

HTTP的消息结构:

  1. HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息(基于TCP/IP协议),是一个无状态的请求/响应协议
  2. HTTP客户端是一个应用程序,通过链接到服务器达到向服务器发送一个或多个HTTP的请求的目的;
  3. HTTP服务端是一个应用程序,通过接收客户端的请求并向客户端发送HTTP响应数据;
  4. HTTP使用统一资源标识符(URI)来传输数据和建立连接

客户端请求消息:

  1. 客户端发送一个请求到服务器的请求消息包括:请求行(request line)请求头部(header)、空行和请求数据(data)四个部分;

服务器响应消息:

  1. HTTP响应也有四个部分组成:状态行消息报头、空行和响应正文

HTTP请求方法:

HTTP的请求方法:
  1. HTTP/1.0定义了三种请求方法:GET、POST和HEAD方法;
  2. HTTP/1.1新增了五种方法:OPTIONS、PUT、DELETE、TRACE和CONNECT方法;
序号方法功能
1GET请求指定的页面信息,并返回实体主体
2HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定的资源提交数据进行处理请求(例如提交表单或者上传文件);数据被包含在请求体中;POST请求可能导致会导致新的资源的建立和(或)已有资源的修改
4PUT从客户端向服务器传送的数据取代指定的文档的内容
5DELETE请求服务器删除指定的页面
6CONNECTHTTP/1.1协议中预留给能够将连接改为通道方式的代理服务器
7OPTIONS允许客户端查看服务器的性能
8TRACE回显服务器收到的请求,主要用于测试或诊断

HTTP的响应头信息:

应答头说明
Allow服务器支持哪些方法(如GET、POST)
Content-Encoding文档的编码方法;只有在解码之后才可以得到Content-Type头指定的内容类型;利用gzip压缩文档能够减少HTML文档的下载时间;Java的GZIPOutputStream可以很方便地进行gzip的压缩,但只有Unix上的Netscape和Windows上的IE4、IE5才支持它;因此,Server应该通过查看Accept-Encoding头检查浏览器是否支持gzip,为支持gzip浏览器返回经过gzip压缩的HTML页面,为其他浏览器返回普通页面;
Content-Length表示内容的长度;只有当浏览器使用持久HTTP连接时才需要这个数据;
Content-Type表示后面的文档属于什么MIME类型;Servlet默认为text/plain,但通常需要显示地指定为text/html;
Date表示当前的GMT时间;可以利用setDateHeader来设置这个头以避免转换时间格式的麻烦;
Expires表示应该在什么时候认为文档已经过期,从而不缓存它?
Last-Modified文档的最后修改时间;客户可以通过if-modified-Since请求头提供一个日期,该请求被视为一个GET请求,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(not modified)状态
Location表示用户去哪里提取文档;Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态码为302
Refresh示浏览器应该在多少时间(秒)之后刷新文档,以秒计;注意Refresh的意义是“N秒之后刷新本页面或者访问指定页面”,而不是“每隔N秒刷新本页面或访问页面”;因此,连续刷新要求每次都发送一个Refresh头,而发送204状态代码可以阻止浏览器继续刷新;Refresh不属于HTTP/1.1正式规范里的,而是一个扩展,但Netscape和IE都支持它;
Server服务器的名字Servlet一般不设置这个值,而是由Web服务器自己设置
Set-Cookie设置和页面关联的Cookie;Servlet应使用addCookie方法()

HTTP状态码:

常见的HTTP状态按码有:

  1. 200:请求成功
  2. 301:资源被永久转移到其他URL;
  3. 404:请求的资源不存在;
  4. 500:内部服务器异常;

HTTP状态码分类:

  1. HTTP状态由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用;HTTP状态码分为5种类型:
分类分类描述
1xx信息,服务器收到请求,需要请求者继续执行操作
2xx成功,操作被成功接收并处理
3xx重定向,需要进一步的操作以完成请求
4xx客户端错误,请求包含语法错误或无法完成请求
5xx服务器错误,服务器在处理请求的过程中发生错误

2. HTTP状态码列表:

状态码状态码的英文名中文描述
100Continue继续,客户端需要继续其请求
101Switching Protocol切换协议;服务器根据客户端的请求切换协议;只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200OK请求成功;一般用于GET与POST请求
201Created已创建;成功请求并创建新的资源
202Accepted已接受;已经接受请求,但未处理完成
203NonAuthoritative Information非授权信息;请求成功,但返回的meta信息不在原始的服务器,而是一个副本
204No Content无内容;服务器成功处理,但未返回内容;在未更新网页的情况下,可确保浏览器继续显示当前的文档
205Reset Content重置内容;服务器处理成功,用户端应重置文档视图;可通过此返回码清除浏览器的表单域
206Partial Content部分内容;服务器成功处理了部分GET请求
300Multiple Choice多种选择;请求的资源可包括多个位置,相应返回一个资源特征与地址的列表用于用户终端选择
301Moved Permanently永久转移;请求的资源已被永久的转移到新的URI,返回信息会包括新的URI,浏览器会自动定向到新URI,今后任何新的请求都应使用新的URI代替
302Found临时移动;与301类似;但资源只是临时被移动,客户端应继续使用原有的URI
303See Other查看其它地址;与301类似,使用GET和POST请求查看
304Not Modified未修改;所谓请求的资源未修改,服务器返回这个状态码时,不会返回任何数据;客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305Use Proxy使用代理;所请求的资源必须通过代理访问
306Unused已经被废弃的HTTP状态码
307Temporary Redirect临时重定向,与302类似,使用GET请求重定向
400Bad Request客户端请求的语法错误,服务器无法理解
401Unauthorized请求要求用户的身份认证
402Payment Required保留,将来使用
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此次请求
404Not Found服务器无法找到客户端的请求找到资源;通过代码,网站设计人员可设置“您所请求的资源无法找到”的个性页面
405Method Not Allowed客户端请求中的方法被禁止
406Not Acceptable服务器无法根据客户端的请求的内容特性完成请求
407Proxy Authentication Required请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408Request Timeout服务器等待客户端发送的请求时间过长,超时
409Conflict服务器完成客户端的PUT请求时可能返回此代码,服务器处理请求时发生了冲突
410Gone客户端的请求的资源已经不存在,410不同于404,如果资源以前有现在被永久删除了可使用410代码
411Length Required服务器无法处理客户端发送的不带Content-Length的请求信息
412Precondition Failed客户端请求信息的先决条件错误
413Request Entity Too Large由于请求的实体过大,服务器无法处理,因此拒绝请求;为防止客户端的连续请求,服务器可能会关闭连接;如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414Request-URI Too Large请求的URI过长,服务器无法处理
415Unsupported Media Type服务器无法处理请求附带的媒体格式
416Requested range not satisfied客户端请求的范围无效
417Expectation Failed服务器无法满足Expect的请求头信息
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented服务器不支持请求的功能,无法完成请求
502Bad Gateway充当网关或代理的服务器,从远端服务器接收到一个无效的请求
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求,延时的长度可包含在服务器的Retry-After头信息中
504Gateway Timeout充当网关或代理的服务器,未及时从远端服务器获取请求
505HTTP Version not supported服务器不支持请求的HTTP协议的版本,无法完成处理

HTTP content-type

Content—Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码;

HTTP长连接:

HTTP/1.0中,默认使用的是短连接;也就是说,浏览器与服务器没进行一次HTTP操作时,就建立一次连接,但任务结束就中断连接

但从HTTP/1.1开始,默认使用长连接,用以保持连接特性;使用长连接的HTTP协议,会在响应头中加入Connection:keep-alive;在使用长连接的情况下,当一个网页打开完成后,客户端与服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页时,会继续使用这一条已经建立的连接;Keep-alive不会永久保持连接,有一个保持时间,可以在不同的服务器软件中设定这个时间;实现长连接要客户端与服务器都支持长连接

HTTP协议的长连接与短连接,实质上是TCP协议的长连接与短连接;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值