教你快速了解HTTP协议

HTTP 简介

1.什么是 HTTP 协议

什么是 HTTP:

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。用于定义客端浏览器和服务器之间交换数据的过程。

为什么学习 HTTP?

  • HTTP 协议是 Web 开发的基础。每一个请求和响应是 Web 开发的最基本的操作。
  • *学习 Web 开发不好好学习 HTTP 协议,将会“打拳不练功,到老一场空”,你花在犯迷糊上的时间比你沉下心来学习 HTTP 的时间肯定会多很多。
  • 学习 HTTP 协议才能在开发中更好的发现问题和解决问题。

2.HTTP 的作用和特点

作用:

*可以使浏览器和服务器之间更高效的传输数据。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

特点:

基于 请求-响应 模型,先有请求后有响应,如下图:

3.HTTP 协议的组成

HTTP 请求协议包括:请求行、请求头、请求体

HTTP 响应协议包括:响应行、响应头、响应体

 

HTTP 请求与响应

HTTP 请求

什么是 HTTP 请求:

客户端连上服务器后,向服务器请求某个 Web 资源,称之为客户端向服务器发送一个 HTTP 请求。

*请求包括了一个请求行、若干请求头、以及请求体内容,请求头和请求体内容之间要用空行隔开。

例如:

POST /post.html HTTP/1.1

Host: localhost:8080

Connection: keep-alive

Content-Length: 36

Cache-Control: max-age=0

Origin: http://localhost:8080

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0

Content-Type:: application/x-www-form-urlencodeed

Accept: */*

Referer: http://localhost:8080/post.html

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN, zh; q=0.9

Cookie: Idea-cf2f3ff1-49de9213-2312-353b-ab35c-fsa23g3faf1; JSESSTONID=14BSDFA35Q2DASDF152ASDDQ

 

name=%E5%B0%8F%E6%98%8E&passWord=456

1.什么是请求行?

请求行里包含了 HTTP 的请求方式、请求资源名称、HTTP 版本。

例如:POST /post.html HTTP/1.1

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

HTTP 请求方式:

请求行中的 POST 称之为请求方式,常见的请求方式有:POST、GET、DELETE、PUT

1)Get 请求:向服务器的特定资源发出查询请求,一般用于查询数据和资源的请求中。

  • *get 请求查询的参数可以在浏览器的地址栏中显示
  • *请求的数据会附加在 URL 之后,以 ? 分割 URL 和传输数据,多个参数用 & 连接
  • *没有请求体

*例如:GET  /get.html?name=xiaohong&passWord=123456  HTTP/1.1

2)POST 请求:向服务器提交数据,一般用在客户端将本地数据或者资源提交给服务器,例如注册用户,将用户信息提交给服务器。

  • POST 请求会把请求的数据放置在 HTTP 请求体中。

*例如:POST  /post.html  HTTP/1.1  数据

数据 name=xiaohong&passWord=123456 放在请求体中,而不会放到 URL 中

3)DELETE 请求:一般用于删除数据的时候。

4)PUT 请求:一般用于更新数据的时候。

使用场景:

  • GET请求通常用于查询操作(比如点击某个商品,某个链接)
  • POST请求通常用于提交数据操作(比如用户登录、注册)

区别:

  • 在 HTTP 规范中, 没有对 URL 的长度和传输的数据大小进行限制。但是在实际开发过程中,对于 GET 请求,特定的浏览器和服务器对 URL 的长度有限制。因此,在使用 GET 请求时,传输数据会受到 URL 长度的限制。(太长不易于识别,而且也会影响性能)
  • 对于 POST 请求, 由于不是 URL 传值,理论上传输数据长度是不受限制的。(所以 POST 请求可以用于一些数据较大的场景,而 GET 请求是不可以的)

2.什么是请求头?

请求头用于描述客户端请求哪台主机,以及客户端的一些环境信息等。请求头以键值对(key=value) 方式传递数据。

例如:

Host: 1ocalhost:8080

Connection: keep-alive

Upgrade-Insecure-Requests: 1

User-Agent :Chrome/58.0.3029.110 Safari/537. 36

Content-Type: application/x7r form-ur lencoded

Accept: text/html, application/ xhtml +xm1, application/ xml;q=0.9 , in iret P. */*;q=0.8

Referer: http://1ocalhost :8080/post. html

Accept -Encoding: gzip, deflate, br

Accept-Language: zh-CN, zh;q=0.8, en;q=0.6

Cookie: Idea-cf2f8ff1=49d3921e-2812-464b-b68b-6c54c9t 5cbl7,

JSESSIONID-8990466BFC3DCC6778D2A03630270A7D

3.什么是请求体?

请求体代表着浏览器在 POST 请求方式中传递给服务器的参数,请求体中的每一个数据都是使用键值对(key=value) 形式,多个值用 & 连接,注:服务器在接收到请求体后需要单独解析。

例如:(用户登录时传入一个 name 和 passWord)

name=test&passWord=123456 (登录数据提交后需要后台服务器单独解析这些数据,HTTP 是不会对他做出解析的)

 

HTTP 响应

什么是 HTTP 响应:

一个 HTTP 响应代表服务器向客户端回送的数据, 它包括:一个响应行、若干响应头、以及响应体,其中的一些响应头和响应体的内容都是可选的,响应头和响应体内容之间要用空行隔开。

例如:

HTTP/1.1  200 

Accept -Ranges: bytes

ETag: W/"413-1495617981796"

Last-Modified: Wed, 24 May 2017 09:26:21 GMT

Content -Type: text/html

Content: -Length: 413

Date: Wed, 24 May 2017 09:29:37 GMT

 

<!DOCTYPE html>

<html lang="en">

<head>

      <meta charset="UTF-8">

      <title>Title</title>

</head>

<body>

<center>

      <h2>........HTTP post........</h2>

      <form action="#" method="post">

            <p>..........; <input type="text" name="name"></p>

            <p>..........; <input type="text" name="name"></p>

            <input type="submit" value="........." />

      </form>

</center>

</body>

</html>

1.什么是响应行?

响应行里包含了 HTTP 协议的版本,以及用于描述服务器对请求的处理结果。

例如:HTTP/1.1  200  OK

格式:协议/版本  状态码  状态码描述

状态码:服务器和浏览器用于确定状态的固定数字号码

  • 200:请求成功
  • 302:请求重定向
  • 404:请求资源不存在,通常是访问路径写错了,或者服务器删除了该资源
  • 500:服务器内部发生错误(和我们没有关系)

2.什么是响应头?

响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理 等一会儿它回送的数据。

例如:

Server: Microsoft- IIS/5.0

Date: Thu, 13 Jul 2000 05:46:53 GMT

Content-Length: 2291

Content-Type: text/html

Cache-control: private

3.什么是响应体?

响应体代表服务器向客户端浏览器回送的正文。

例如:(将 html 作为一个响应体返回给浏览器,浏览器直接解析然后显示)

<!DOCTYPE html>

<html lang="en">

<head>

      <meta charset="UTF-8">

      <title>Title</title>

</head>

<body>

<center>

      <h2>........HTTP post........</h2>

      <form action="#" method="post">

            <p>..........; <input type="text" name="name"></p>

            <p>..........; <input type="text" name="name"></p>

            <input type="submit" value="........." />

      </form>

</center>

</body>

</html>


哟!神秘传送门 快来探索吧...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值