博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTP协议
阅读量:4102 次
发布时间:2019-05-25

本文共 2323 字,大约阅读时间需要 7 分钟。

HTTP简介
       HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:WorldWide Web )服务器传输超文本到本地浏览器的传送协议。
       HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。http请求是基于tcp请求的。
主要特点
       2.1简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
       2.2灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
       2.3无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
       2.4无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
      2.5支持B/S及C/S模式。
http通信的四个阶段

一次HTTP操作称为一个事务,其工作过程可分为四步:
    
1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
    
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
    
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
    
4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

http协议请求头与响应头

    
请求头中的常用请求头字段
Accept:用于高速服务器,客户机支持的数据类型
(
告诉服务器,浏览器可以接受文本,网页图片)
Accept-Charset:用于告诉服务器,客户机采用的编码格式
Accept-Encoding
:用于告诉服务器,客户机支持的数据压缩格式
Accept-Language
:客户机的语言环境(
浏览器支持的语言
Host
:客户机通过这个头高速服务器,想访问的主机名(
浏览器要找的主机
If-Modified-Since
:客户机通过这个头告诉服务器,资源的缓存时间(
告诉服务器我这缓存中有这个文件,该文件的缓存时间是..
)
Referer
:客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的(
告诉浏览器客户端来自哪里,常用于防止下载,防盗链
User-Agent
:客户机通过这个头告诉服务器,客户机的软件环境
(告诉服务器,客户端的浏览器内核
)
Cookie
:客户机通过这个头可以向服务器带数据
Connection
:处理完这次请求后是否断开连接还是继续保持连接
Date
浏览器发送数据的请求时间
请求方式:POST,GET,HEAD,DELETE,PUT,TRACE,
   get
提交,传输数据大小是2K左右(仅是IE浏览器)
   post
提交,最好在64k不然会影响性能
   
   
HTTP响应头
HTTP状态码
             当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
              HTTP
状态码的英文为HTTP Status Code。状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
常见状态代码、状态描述的说明如下。
200  OK:客户端请求成功。
400  Bad Request:客户端请求有语法错误,不能被服务器所理解。
401  Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
403   Forbidden:服务器收到请求,但是拒绝提供服务。
404   Not Found:请求资源不存在,举个例子:输入了错误的URL。
500   Internal Server Error:服务器发生不可预期的错误。
503  Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。
 
关于HTTP请求GET和POST的区别
     
 1.    本质区别:get是从服务器上获取数据,post是向服务器传递数据。在做数据查询时,建议用get方式,而做数据增删改时,建议用post方式。
      2.    参数传递区别:get是把参数数据队列加到提交表单ACTTON属性所指的URL中,
                
  安全性差
                post将数据放在请求体
     3.    数据大小区别:get传送的数据量较小,不能大于2KB。Post传送的数据较大,一般被默认为不受限制,理论上是1TB
     4.    安全性区别:get安全性非常低,post安全性较高。但是执行效率却比post方法好。Post是相对安全,如果属性http协议基本没什么安全可言
你可能感兴趣的文章
面试想拿 10K,HR 说我只配7k?
查看>>
副业过万的程序员都知道的网站有哪些
查看>>
那些人生“开挂”的程序员,都在干什么?
查看>>
影响科学圈的那些计算机代码
查看>>
乐视视频 App 图标改为“欠 122 亿”,网友:我在别家分红包,却在你家随份子!...
查看>>
乔布斯18岁求职信拍卖价22.24万美元,值吗?
查看>>
为何程序员总喜欢写技术博客,看完恍然大悟...
查看>>
假如计算机是中国人发明的,那代码应该这么写
查看>>
触目惊心:比特币到底消耗了多少能源?
查看>>
面试官:简历上敢写技术精通?那我就不客气了!
查看>>
如何判断一家互联网公司要倒闭了?
查看>>
想快速上手机器学习?来看下这个 GitHub 项目!
查看>>
GitHub 标星 3.6k,一本开源的深度学习中文教程!
查看>>
9 款你不能错过的 JSON 工具
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
200页!分享珍藏很久的Python学习知识手册(附链接)
查看>>
程序员之神
查看>>
4 岁小女孩给 Linux 内核贡献提交
查看>>
推荐几个私藏很久的技术公众号给大家
查看>>
王垠受邀面试阿里 P9,被 P10 面跪后网上怒发文,惨打 325 的 P10 赵海平回应了!...
查看>>