admin管理员组

文章数量:1652578

目录

引入

http协议的作用及特点

协议功能

http协议的版本

Http协议的组成

HTTP请求报文

HTTP请求报文头属性

HTTP响应报文

Content-Type详解

Http 协议中的扩展

Http 协议的特点


引入

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

http协议的作用及特点

HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。
 

通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。

通过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。

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

2.http协议默认端口:80

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

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

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

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

协议功能


HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。

http协议的版本


HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开

HTTP/1.1,发送请求,创建一次连接,获得多个web资源,连接断开

Http协议的组成


Http协议由Http请求和Http响应组成,当在浏览器中输入网址访问某个网站时, 你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请  求后会组织响应数据封装成一个Http响应返回给浏览器。即没有请求就没有响应。

 

http请求包括:请求行、请求头、请求体

http响应包括:响应行、响应头、响应体

HTTP请求报文

HTTP请求报文由3部分组成(请求行+请求头+请求体):

 

请求行:

例如:POST /chapter17/user.html HTTP/1.1

格式:请求方式 资源路径 协议/版本

请求行必须在http请求格式的第一行。

get请求:

将请求参数追加在url后面,不安全

url长度限制get请求方式数据的大小

没有请求体

一般的HTTP请求大多都是GET。

post请求:

请求参数在请求体处,较安全。

请求数据大小没有显示

只有表单设置为method=“post”才是post请求,其他都是get请求

常见get请求:地址栏直接访问、<a href="">、<img src="">等

HEAD请求:

HEAD跟GET相似,不过服务端接收到HEAD请求时只返回响应头,不发送响应内容。所以,如果只需要查看某个页面的状态时,用HEAD更高效,因为省去了传输页面内容的时间。

DELETE请求:

删除某一个资源。

OPTIONS请求:

用于获取当前URL所支持的方法。若请求成功,会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。

PUT请求:

把一个资源存放在指定的位置上。

本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。

TRACE请求:

回显服务器收到的请求,主要用于测试或诊断。

CONNECT请求:

CONNECT方法是HTTP/1.1协议预留的,能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接与非加密的HTTP代理服务器的通信。

在 REST 架构风格中,有严格规定对于不同的请求类型要设置合适的请求方法。

也是避免出 现因为乱用导致混乱的问题。这里提到了 REST 架构,现在很多同学都在写 REST,有没有人 能够明白为什么要定义 REST 这个架构风格?

  •  随着服务化架构的普及,http 协议的使用频率越来越高
  • 很多人在错误的使用 http 协议定义接口,比如各种各样的命名,什么 getUserInfoById, deleteById 之类的、有状态和无状态请求混用。
  •  对于 http 协议本身提供的规则并没有很好的利用

所以,为了更好的解决这些问题,干脆就定义一套规则,这套规则并没有引入新的东西,无 非就是对 http 协议本身的使用做了一些约束,比如说

  •  REST 是面向资源,每一个 URI 代表一个资源
  •  强调无状态化,服务器端不能存储来自某个客户的某个请求中的信息,并在该客户的其他 请求中使用
  •  强调 URL 暴露资源时,不要在 URI 中出现动词
  •  合理的利用 http 状态码、请求方法。

因此大家在参照这种标准去使用 REST 风格时,要明白你遵循的是什么以及要解决什么问题。

请求头:

例如:Host: 39.108.107.149:8080

请求头从第二行开始,到第一个空格结束。请求头和请求体之间存在一个空格(如下)

POST http://39.108.107.149:8080/vk/app/rest/ddp/iModelServiceImpl/findModelByType HTTP/1.1
User-Agent: Fiddler
Host: 39.108.107.149:8080
Content-Length: 11
 
name=城市

请求头通常以键值对{key:value}方式传递数据。

key为规范的固定值

value为key对应的取值,通常是一个值,可能是一组。

HTTP请求报文头属性


常见请求头

Referer:表示这个请求是从哪个url跳过来的,通过百度来搜索淘宝网,那么在进入淘宝网的请求报文中,Referer的值就是:www.baidu。如果是直接访问就不会有这个头。

常用于:防盗链。

Referrer Policy: no-referrer-when-downgrade

本文标签: 详解协议http