HTTP协议详解-day02

文章介绍了HTTP协议中的URL结构,包括协议名、服务器地址、查询字符串等组成部分,以及URL中可省略的部分。接着讨论了URL编码(URLencode)的规则。HTTP的GET方法通常用于获取资源,而POST方法常用于提交数据,二者在语义、数据传递方式、幂等性和缓存策略上有所区别。
摘要由CSDN通过智能技术生成


HTTP协议请求

URL结构

URL (Uniform Resource Locator 统一资源定位符)
互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它.
URL 的详细规则由因特网标准RFC1738进行了约定:https://datatracker.ietf.org/doc/html/rfc1738
在这里插入图片描述

例如:https://www.bilibili.com/documentary/?spm_id_from=333.1007.0.0

https :协议方案名. 常见的有 http 和 https, 也有其他的类型。
user:pass : 登陆信息. 现在的网站进行身份认证一般不再通过 URL 进行了,一般都会省略。
www.bilibili.com : 服务器地址. 此处是一个 “域名”, 域名会通过 DNS 系统解析成一个具体的 IP 地址。
端口号: 上面的 URL 中端口号被省略了. 当端口号省略的时候, 浏览器会根据协议类型自动决定使用哪个端口。( http 协议默认使用 80 端口, https 协议默认使用 443 端口
documentary : 带层次的文件路径。
spm_id_from=333.1007.0.0:查询字符串(query string). 本质是一个键值对结构。键值对之间使用 & 分隔;键和值之间使用 = 分隔。
片段标识: 此 URL 中省略了片段标识。


URL 中的可省略部分

1.协议名: 可以省略, 省略后默认为 http://
2.ip 地址 / 域名: 在 HTML 中可以省略(比如 img, link, script, a 标签的 src 或者 href 属性). 省略后表示服务器的 ip / 域名与当前 HTML 所属的 ip / 域名一致.
3.端口号: 可以省略. 省略后如果是 http 协议, 端口号自动设为 80; 如果是 https 协议, 端口号自动设为 443.
4.带层次的文件路径: 可以省略. 省略后相当于 / . 有些服务器会在发现 / 路径的时候自动访问/index.html
5.查询字符串: 可以省略
6.片段标识: 可以省略


URL encode

转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式

现在URL转义表示法比较常用的有两个:
RFC 2396 - Uniform Resource Identifiers (URI): Generic Syntax
RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax
以下是RFC3986中对转义部分的一些定义:


HTTP协议常见方法

在这里插入图片描述

GET方法

GET 是最常用的 HTTP 方法,常用于获取服务器上的某个资源。

浏览器打开bilibili,此时fiddler中抓到的抓包结果,其中包含浏览器地址栏发送的GET请求:
GET请求
请求报文:
在这里插入图片描述

GET 请求的特点
首行的第一部分为 GET
URL 的 query string 可以为空, 也可以不为空.
header 部分有若干个键值对结构.
body 部分为空

POST 方法

登陆系统,通过fiddler查看抓包结果,其中包含POST 方法:
在这里插入图片描述
观察请求报文:
在这里插入图片描述

POST 请求的特点
首行的第一部分为 POST
URL 的 query string 一般为空 (也可以不为空)
header 部分有若干个键值对结构。
body 部分一般不为空,body 内的数据格式通过 header 中的 Content-Type 指定. body 的长度由header 中的 Content-Length 指定。


GET和POST方法区别

1.语义不同: GET 一般用于获取数据, POST 一般用于提交数据
2.GET 的body 一般为空, 需要传递的数据通过 query string 传递
POST 的 query string 一般为空, 需要传递的数据通过 body 传递
3.GET 请求一般是幂等的, POST 请求一般是不幂等的。(如果多次请求得到的结果一样, 就视为请求是幂等的)
4.GET 可以被缓存, POST 不能被缓存

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值