HTTP介绍

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。HTTP默认端口号为80,你可以更改为使用其他端口,但一般不这么使用。

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。一个HTTP"服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。

客户端发送一个HTTP请求到服务器的请求消息包括:请求行(request line)、请求头部(header)、空行和请求数据。请求的详细格式如下:

1 动词 路径 协议/版本

2 Key1: value1

2 Key2: value2

2 Key3: value3

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

2 Host: www.baidu.com

2 User-Agent: curl/7.54.0

3(空行)

4 要上传的数据

其中,需要注意的是:

1.请求最多包含四部分,最少包含三部分。(也就是说第四部分可以为空)

2.第三部分永远都是一个回车(\n)

3.动词有 GET POST PUT PATCH DELETE HEAD OPTIONS 等

4.这里的路径包括「查询参数」,但不包括「锚点」

5.如果你没有写路径,那么路径默认为 /

6.第 2 部分中的 Content-Type 标注了第 4 部分的格式

我们也可以在浏览器上查看我们浏览网址的请求,以下是查看过程:

1.打开浏览器,右键点击选中“检查”,打开浏览器代码查看页面,选择“Network”。在地址栏输入网址“www.baidu.com”,回车,查看 request,点击“view source”,变可以查看到请求的前三部分了,如下图所示:


2.如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到。

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。响应的详细格式如下:

1 协议/版本号 状态码 状态解释

2 Key1: value1

2 Key2: value2

2 Content-Length: 17931

2 Content-Type: text/html

3(空行)

4 要下载的内容

我们也可以在浏览器上查看我们浏览网址的响应,以下是查看过程:

1.打开浏览器,右键点击选中“检查”,打开浏览器代码查看页面,选择“Network”。在地址栏输入网址“www.baidu.com”,回车,查看 response headers,点击“view source”,变可以查看到响应的前二部分了,如下图所示:


2.查看 Response 或者 Preview,你会看到响应的第 4 部分。

最后,介绍一下如何使用Curl命令。curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS GOPHER,TELNET,DICT,FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST,PUT等方法,FTP上传,kerberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

curl的常用选项:

1. -s  不显示进度表或错误消息

2. -v 将POST请求中指定的数据发送到HTTP服务器。

3 -H 自定义头信息传递给服务器。

4. -X  使用指定的HTTP代理。

5. -d 添加请求中的上传数据。

例如命令:curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com",便可以完整的得到一个请求和响应过程。其中,

-X Post 表明请求类型为Post,-d “1234567890”,表明把10字节的字符串“1234567890”上传。-H "Frank: xxx" 表明请求中的头信息为“Frank: xxx”,"https://www.baidu.com"表明请求的内容为“https://www.baidu.com”这个网址。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • xdh精英班20160909课后作业: Node.js HTTP 介绍 本文根据xdh精英班20160909课后作...
    birdflying阅读 904评论 0 4
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 8,499评论 6 152
  • Http协议详解 标签(空格分隔): Linux 声明:本片文章非原创,内容来源于博客园作者MIN飞翔的HTTP协...
    Sivin阅读 5,260评论 3 82
  • 我一直对周围的变化保持的警觉,大概是因为知道现今已经不是自然选择适应环境的社会,而是一些特立独行的人按照自己意愿创...
    走鱼阅读 418评论 0 1