HTTP基本原理

HTTP基本原理

1.URL和URI

URL,全称Uniform Resource Locator,是统一资源定位符,俗称“网址”,用于唯一标识互联网上的信息资源,并给出其位置。URL由协议标识符、主机名、端口号和资源路径等部分组成。一个完整的URL包括:协议、域名、端口、虚拟目录、文件名、参数、锚。

URI,全称Uniform Resource Identifier,是统一资源标识符,用于唯一标识互联网上的信息资源。

URL 是 URI 的子集,URI 还包括一个子类 URN (Uniform Resource Name,统一资源名称)。URI 可以被视为定位符 URL 、名称 URN 或者两者兼备。URN 定义某事物的身份,URL 提供查找该事物的方法,URN 仅用于命名,而不指定地址。

2.HTTP 和 HTTPS

HTTP(超文本传输协议)和HTTPS(超文本传输安全协议)都是互联网上应用非常广泛的网络协议,但它们之间存在一些重要的区别。

HTTP是一个客户端和服务器端请求和应答的标准(TCP),用于从Web服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用是建立一个信息安全通道,来保证数据传输的安全,以及确认网站的真实性。

在安全性方面,HTTPS通过SSL层进行加密传输,以保护数据的安全性。而HTTP的信息是明文传输的,容易被第三方获取。因此,HTTPS比HTTP更安全。

在连接方式方面,HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样。HTTP的连接很简单,是无状态的;而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。因此,HTTPS比HTTP更复杂,但提供了更好的安全性和连接状态管理。

在使用方面,HTTPS需要到CA申请证书,一般免费证书较少,因而需要一定费用。而HTTP则不需要证书,使用起来相对简单。

3.请求

Request (请求)由客户端发出。可以划分为4个部分的内容:Request Method(请求方式)、Request URL (请求 URL 地址)、Request Headers(请求头)和 Request Body(请求体)。

(1)Request Method(请求方式),常见的两种: GET 和 POST

  • GET请求:GET是最常见的请求方式,它用于从服务器获取数据。GET请求将请求参数放在URL的后面,并且会完整保留在浏览器的历史记录中。在浏览器中直接输入一个 URL 并回车,便会发送一个 GET 请求,请求参数直接包含到 URL 。
  • POST请求:POST请求用于向服务器提交数据。POST请求大多为表单发起的,如用户登录。

(2)Request URL (请求 URL 地址)

通过解析Request URL,服务器可以准确地定位到客户端请求的资源,并返回相应的内容。

(3)Request Headers(请求头)

  • Accept:指定了客户端能够接受的数据类型,如text/html、application/json等。
  • Content-Encoding:指定了客户端可接受的内容编码。
  • Content-Language:指定了客户端可接受的语言类型。
  • cookies:客户端保存的一种会话技术,存储在客户端的内存或硬盘中。包含一些存储在服务器上的数据,这些数据可以在多个页面间保持持久性,使服务器能够识别用户。Session存储的是服务器端的数据,对客户端是透明的,即客户端无法直接访问Session中的数据。Session的安全性比Cookies高,因为Session存储在服务器上,无法被恶意修改或利用。但这也意味着服务器需要更多的存储空间来保存Session数据。
  • Host:指定了目标服务器的主机名和端口号。
  • Referer:用来标识这个请求信息是从哪个页面发送过来的,服务器可以获取这个信息并进行相应的处理,如来源统计,防盗链处理等。
  • User-Agent (UA) :指定了发起请求的客户端应用程序或浏览器的信息。字段中包含的信息有:用户使用的操作系统以及版本,浏览器信息以及版本等信息。在爬虫时加上该信息可以伪装成浏览器。

(4)Request Body(请求体)

请求体是HTTP请求的核心部分,其中包含了需要上传到服务器的数据。这些数据可以是表单数据、JSON数据、XML数据等,通常以key-value的形式进行传输。

4.响应

Response(相应)由服务器端返回给客户端。Response 可以划分为 3 个部分:Response Status Code(响应状态码),Response Header(响应头)和 Response Body(响应体)。

(1)Response Status Code(响应状态码),其中最常见的就是200 OK,403 Forbidden,404 Not Found,500 Internal Server Error 等等

  • 200 OK:请求成功。这是最常见的状态码,表示客户端的请求已成功被服务器接收、理解并处理。

  • 201 Created:请求成功,并创建了新的资源。这个状态码表示客户端的请求已经成功,并且服务器已经创建了一个新的资源。

  • 202 Accepted:请求已接受,但未处理完毕。这个状态码表示服务器已经接受了客户端的请求,但是请求还没有被完全处理。

  • 204 No Content:请求已成功,但服务器没有返回任何内容。这个状态码表示服务器已经处理了客户端的请求,但是没有需要返回的数据。

  • 301 Moved Permanently:请求的资源已被永久移动。这个状态码表示客户端请求的资源已经被永久移动到其他位置,服务器会返回新的资源位置。

  • 302 Found:请求的资源临时被移动。这个状态码表示客户端请求的资源已经被临时移动到其他位置,服务器会返回新的资源位置。

  • 304 Not Modified:资源未被修改。这个状态码表示客户端请求的资源在服务器上没有发生变化,服务器会返回客户端缓存的资源。

  • 400 Bad Request:请求格式错误。这个状态码表示客户端发送的请求格式不正确,服务器无法理解。

  • 401 Unauthorized:请求需要身份验证。这个状态码表示客户端请求需要身份验证,但是客户端未提供有效的身份验证信息。

  • 403 Forbidden:请求被禁止。这个状态码表示客户端的请求被服务器拒绝,因为访问权限被禁止。

  • 404 Not Found:请求的资源不存在。这个状态码表示客户端请求的资源在服务器上不存在。

  • 500 Internal Server Error:服务器内部错误。这个状态码表示服务器在处理客户端请求时发生了内部错误。

(2)Response Header(响应头),包含了服务器对请求的应答信息。

  • Content-Type:表示服务器返回的数据类型,例如text/html表示返回HTML文本,application/json表示返回JSON数据。

  • Content-Length:表示服务器返回的数据长度,单位是字节。

  • Cache-Control:用于控制客户端浏览器是否可以缓存页面内容,以及缓存的时间期限。

  • Set-Cookie:表示服务器设置的Cookie信息,用于跟踪用户会话状态。

  • Location:用于重定向请求到另一个URL地址。

  • Expires:表示服务器返回的资源过期时间,用于控制缓存的有效期。

  • ETag:表示资源的特定版本的标识符,用于实现HTTP缓存验证和条件请求。

  • Last-Modified:表示资源最后修改的时间,用于实现HTTP缓存验证和条件请求。

(3)Response Body(响应体)

Response Body是HTTP协议中服务器返回给客户端的数据部分,它可以是不同形式的数据,根据不同的请求和响应情况进行返回。响应体可以是文本、HTML、JSON、XML等形式的数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值