【CSDN实训】HTTP与HTTPS以及HTTP协议的请求头与响应头

HTTP与HTTPS

HTTP:超文本传输协议(HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议,所有W3C文件必须遵守这个标准,设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法,但是它的协议传输方式是利用明文进行传输的,存在安全隐患。

HTTP协议连接方式:

  1. 客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过 TCP 来完成的,一般 TCP 连接的端口号是80。 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URI)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和许可内容。
  2. 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。

HTTPS:HTTPS是基于HTTP协议提高了安全性的版本,HTTPS提供了一个系列的加密+认证+完整性保护的操作,从而保证了数据在传输过程中的安全。而其安全基础是SSL 协议。

SSL协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。SSL 协议可分为两层:SSL 记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL 握手协议(SSL Handshake Protocol),它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

HTTP与HTTPS的区别:

1、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)

2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

HTTP请求头和响应头,请求方式及响应码

一段HTTP报文包含三部分:报文首部+空行+报文主体;报文首部又可划分为请求报文和响应报文。

在这里插入图片描述

请求报文包括: 请求行+请求头+空行+请求数据

请求报文

请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。

常用的请求方法:

GET:请求指定的页面信息

HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。

POST:向指定资源提交数据进行处理请求。数据被包含在请求体中。

GET和POST的区别:

GET:

  1. 请求参数会显示在地址栏中
  2. 参数长度有限制
  3. 不太安全

POST:

  1. 请求参数不会在地址栏中,会封装在请求体中
  2. 参数长度无限制
  3. 较为安全

请求头

Accept:浏览器通过这个头,告诉服务器它所支持的数据类型
Accept-Charset:浏览器通过这个头,告诉服务器它采用的字符集
Accept-Encoding:浏览器通过这个头,告诉服务器,它所支持的压缩格式
Accept-Language:浏览器通过这个头,告诉服务器,它所采用的语言
Host:浏览器通过这个头,告诉服务器,我想访问服务器哪台主机
If-Modified-Since:浏览器通过这个头,告诉服务器,它缓存数据时间是多少。
Referer:浏览器通过这个头,告诉服务器,我是从哪个网页点过来的(防盗链)

Connection:连接方式

响应报文

响应报文包含: 状态行+响应头+空行+请求数据

状态行

状态码

1xx:信息性状态码,接收的请求正在处理

2xx:成功状态码,请求正常处理完毕

  1. 200 OK:表示从客户端发来的请求在服务器端被正常处理了。
  2. 204 No Content:该状态码代表服务器接收的请求已经成功处理,但在返回的响应报文中不含实体的主体部分。
  3. 206 Partial Content:该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的请求。响应报文中包含由Content-Range指定范围的实体内容。

3xx:重定向状态码,需要进行附加操作以完成请求

  1. 301 Moved Permanently:永久性重定向。该状态码表示请求的资源已被分配了新的URI,以后应该使用现在资源所指的URI。
  2. 302 Found:临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户本次能使用新的URI访问。
  3. 303 See Other:该状态码表示由于请求对应的资源存在着另外一个URI,应使用GET方法定向获取请求的资源。
  4. 304 Not Modified:该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但因发生请求未满足条件的情况后直接返回304。304状态码返回时,不包含任何响应的主体部分。304虽然被划分在3XX类别中,但是和重定向没有关系。(附带条件的请求时指采用GET方法的请求报文中包含If-Match、If-Modified-Since、If-Range等任一首部)
  5. 307 Temporary Redirect:临时重定向。该状态码与302 Found有着相同的含义。

4xx:客户端错误状态码,服务器无法处理请求

  1. 400 Bad Request:该状态码表示请求报文中存在语法错误。

401 Unauthorized:该状态码表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外若之前已进行过1次请求,则表示用户认证失败。

  1. 403 Forbidden:该状态码表明对请求资源的访问被服务器拒绝了。未获得文件系统的访问授权,访问权限出现某些问题等情况都可能发生403。

  2. 404 Not Found:该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。

5xx:服务端错误状态码,服务器处理请求出错

  1. 500 Internal Server Error:该状态码表明服务器端在执行请求时发生了错误,也有可能是Web应用存在的Bug或某些临时的故障。

  2. 503 Service Unavailable:该状态码表明服务器暂时处于超负荷或正在进行停机维护,现在无法处理请求。

HTTP响应头

Location:这个头通常配合302状态码使用,它用于告诉浏览器你去找谁。
Server:告诉浏览器,服务器的类型
Content-Encoding: 服务器通过这个头,告诉浏览器,回送的数据采用的压缩格式。
Content-Length: 返回数据的长度
Content-Language: 返回数据的语言
Content-Type:这个头用于告诉浏览器,回送数据的类型
Last-Modified:这个头用于告诉浏览器,数据的最后修改时间
Refresh: :这个头用于控制浏览器定时刷新
Content-Disposition: 用于通知浏览器,以下载方式打开回送的数据
Transfer-Encoding: 用于通知浏览器,数据是以分块形式回送的
ETag: 缓存相头的头
Expires: 用于说明网页的失效时间,如果该值为一个<0的值,则服务器是通知浏览器不要缓存
Cache-Control: no-cache 通知浏览器不要缓存

感谢您的阅读,如果本篇文章对您有帮助,欢迎点赞,关注,您的阅读是我莫大的鼓励!


版权声明:本文为missingtheway原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。