面试|Web协议(HTTP协议)

HTTP协议

  • HTTP
    • HTTPS
    • URL
    • Request
      • 请求行
      • 请求头
      • 请求体
        • GET请求与POST请求
    • Response
      • 响应行
      • 响应头
      • 响应体
HTTP
HTTP(Hyper Text Transfer Protocol),超文本传输协议是一个简单的请求-响应协议,通常运行在TCP之上。它是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。它工作在C/S架构上,浏览器(HTTP客户端)通过URL向Web服务器(HTTP服务端)发送请求,而服务端根据接收到的请求后,向客户端响应信息。
面试|Web协议(HTTP协议)
文章图片

HTTPS
HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer),超文本传输安全协议是以安全为目标的 HTTP 通道(即HTTP的安全版),在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS相当于HTTP 加入了SSL(Secure Sockets Layer 安全套接字协议),HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 。
URL
HTTP使用URL来传输数据和建立连接。URL(uniform resource locator 统一资源定位符)是因特网的万维网服务程序上用于指定信息位置的表示方法。即任何网站、网页等在线资源的完整网址。
示例,简单介绍URL的组成:
https://blog.csdn.net/qq_56886142/category_11700124.html?spm=1001.2014.3001.5482&id=AQ_Teacher&pwd=123#blog

  • 协议:“https:”。"HTTPS"后面的“//”为分隔符。
  • 域名:“blog.csdn.net”。一个URL中,也可以使用IP地址作为域名使用。
  • 端口:域名后面的是端口,域名和端口之间使用“:”作为分隔符。一般使用默认端口,可省略。
  • 虚拟目录:从域名后的第一个“/”开始到最后一个“/”。虚拟目录也不是URL必须的部分。
  • 文件名:从域名后的最后一个“/”开始到“”。如果没有“”,则是从域名后的最后一个“/”开始到“#”是文件名部分;如果没有“”和“#”,那么从域名后的最后一个“/”开始到结束都是文件名部分。文件名也不是URL必须的部分,一般使用默认文件名,可省略。
  • 锚:从“#”开始到最后。锚也不是URL必须的部分。
  • 参数:从“”开始到“#”,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
Request
Request(请求报文)是指客户端向服务器端发送的请求消息,它包含请求行、请求头和请求体三部分。
下面向Register.html发起请求,地址栏输入URL回车,如图:
面试|Web协议(HTTP协议)
文章图片

点击注册,向Register发起请求并跳转到该页面,如图:
面试|Web协议(HTTP协议)
文章图片

请求行
请求行是展现当前的请求方式、访问地址、HTTP协议的版本的信息。
Register.html请求行:
面试|Web协议(HTTP协议)
文章图片

Register请求行:
面试|Web协议(HTTP协议)
文章图片

请求头
请求头是以具体的参数方式来详细说明本次的请求。
Register.html请求头:
面试|Web协议(HTTP协议)
文章图片

Register请求头:
面试|Web协议(HTTP协议)
文章图片

其中:
  • Accept:声明当前请求能够接受的MIME(Multipurpose Internet Mail Extensions(多用途互联网邮件扩展))文件类型
  • Host:服务器的主机地址
  • Referer:当前请求来源页面的地址
  • Content-Length:请求体内容的长度
  • Content-Type:请求体的内容类型,这一项的具体值是媒体类型中的某一种
  • User-Agent:浏览器名称
请求体
请求体是将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。即POST请求方式下的请求参数。
Register.html的请求方式是GET,而GET方式是没有请求体的。
面试|Web协议(HTTP协议)
文章图片

Register的请求方式是POST,请求体如下:
面试|Web协议(HTTP协议)
文章图片

GET请求与POST请求 GET是从服务器上获取数据,POST是向服务器传送数据。
GET请求的请求参数附着在URL后面,浏览器地址栏能够看到,所以安全性低( GET请求的请求参数放在请求行中); 而且URL携带请求参数的容量有限,如果数据量大,那么超出容量的数据会丢失。
POST请求的请求参数放在请求体中,浏览器地址栏看不到,所以相对安全些;而且请求体发送数据的空间没有限制,可以发送各种不同类型的数据。
Response
Response(响应报文)一般情况是服务器接受并处理客户端发起的请求后返回的HTTP响应消息。它包含响应行、响应头和响应体三部分。
下面查看Register.html的响应,如图:
面试|Web协议(HTTP协议)
文章图片

Register的响应:
面试|Web协议(HTTP协议)
文章图片

响应行
响应行是展现HTTP协议版本、响应状态码和响应状态的说明文字的信息。
Register.html的响应行:
面试|Web协议(HTTP协议)
文章图片

Register的响应行:
面试|Web协议(HTTP协议)
文章图片

其中,响应状态码分为五种:
  • 1**:指示信息——请求已接收,继续处理
  • 2**:成功——请求已被成功接收理解
  • 3**:重定向——完成请求需要更进一步的操作
  • 4**:客户端错误——请求无法实现或请求语法错误
  • 5**:服务端错误——服务端不能实现合法的请求
响应头
响应头是对响应体的信息的说明。
Register.html的响应头:
面试|Web协议(HTTP协议)
文章图片

Register的响应头:
面试|Web协议(HTTP协议)
文章图片

响应体
响应体是服务器返回各种数据的主体。
Register.html的响应体:
面试|Web协议(HTTP协议)
文章图片

Register的响应体:
【面试|Web协议(HTTP协议)】面试|Web协议(HTTP协议)
文章图片

    推荐阅读