
平时我们俗称的"网址"其实就是说的URL(UniformResourceLocator统⼀资源定位符). 互联⽹上的每个文件都有⼀个唯⼀的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它. URL的详细规则由因特网标准RFC1738进行了约定.https://datatracker.ietf.org/doc/html/rfc1738

⼀个具体的URL:
1 https://v.bitedu.vip/personInf/student?userId=10000&classId=100
使⽤ping命令查看域名对应的IP地址. 1. 在开始菜单中输⼊ cmd ,打开 命令提⽰符
2. 在cmd中输入 ping v.bitedu.vip ,即可看到域名解析的结果

URL 的 query(也叫 “查询字符串”)是 URL 中用来向服务器传递参数的部分,通常跟在问号(?)后面。
它的核心特点是:
key=value形式的键值对组成,多个参数用&分隔;https://example.com/search?keyword=书籍&page=2中,keyword=书籍&page=2就是 query,其中keyword是搜索关键词参数,page是分页参数;query string 中的内容是键值对结构.其中的key和value的取值和个数,完全都是程序猿自己约定 的.我们可以通过这样的方式来自定制传输我们需要的信息给服务器
URL中的可省略部分
像/?:等这样的字符,已经被url当做特殊意义理解了.因此这些字符不能随意出现. 比如,某个参数中需要带有这些特殊字符,就必须先对特殊字符进⾏转义
⼀个中⽂字符由UTF-8或者GBK这样的编码方式构成,虽然在URL中没有特殊含义,但是仍然需要进行转义.否则浏览器可能把UTF-8/GBK编码中的某个字节当做URL中的特殊符号
转义的规则如下:将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做 ⼀位,前面加上%,编码成%XY格式
application/x-www-form-urlencoded编码方式)。0xE6 0xB5 0x8B 0xE8 0xAF 0x95,经 urlencode 编码后会变为%E6%B5%8B%E8%AF%95。
"+" 被转义成了"%2B"
urldecode就是urlencode的逆过程;

GET是最常用的HTTP方法.常用于获取服务器上的某个资源.
在浏览器中直接输入URL,此时浏览器就会发送出⼀个GET请求.
另外,HTML中的link,img,script等标签,也会触发GET请求.
后面我们还会学习,使用JavaScript中的ajax也能构造GET请求.
打开Fiddler,访问搜狗主页,观察抓包结果

注意:要摁住 CTRL+ 游览器的刷新

在上⾯的结果中可以看到:
最上面的

是通过浏览器地址栏发送的GET请求. 下面的和sogou域名相关的请求,有些是通过html中的link/script/img标签产生的,例如

有些是通过ajax的方式产生的,例如:

选中第⼀条
关于GET请求的URL长度问题 网上有些资料上描述: get 请求长度最多 1024kb 这样的说法是错误的. HTTP协议由RFC2616标准定义,标准原⽂中明确说明:"HypertextTransferProtocol--HTTP/1.1," doesnotspecify any requirement for URLlength. 没有对URL的长度有任何的限制. 实际URL的长度取决于浏览器的实现和HTTP服务器端的实现.在浏览器端,不同的浏览器最大长度 是不同的,但是现代浏览器支持的长度⼀般都很长;在服务器端,⼀般这个长度是可以配置的
POST方法也是⼀种常见的方法.多用于提交用户输入的数据给服务器(例如登陆页面)
通过HTML中的form标签可以构造POST请求,或者使用JavaScript的ajax也可以构造POST请求.

点击这个请求,查看请求详情
POST https://v.bitedu.vip/tms/login HTTP/1.1
Host: v.bitedu.vip
Connection: keep-alive
Content-Length: 105
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS
Content-Type: application/json;charset=UTF-8
Access-Control-Allow-Origin: *
Accept: application/json, text/plain, */*
Access-Control-Allow-Headers: Content-Type, Content-Length, Authorization, Accep
Origin: https://v.bitedu.vip
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://v.bitedu.vip/login
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: username=123456789; rememberMe=true
{"username":"123456789","password":"xxxx","code":"jw7l","uuid":"d110a05ccde64b16补充说明:
• PUT与POST相似,只是具有幂等特性,⼀般⽤于更新
• DELETE删除服务器指定资源
• OPTIONS返回服务器所支持的请求方法
• HEAD类似于GET,只不过响应体不返回,只返回响应头
• TRACE回显服务器端收到的请求,测试的时候会用到这个
• CONNECT预留,暂⽆使⽤
这些方法的HTTP请求可以使⽤ajax来构造.(也可以通过⼀些第三⽅⼯具)
任何⼀个能进行网络编程的语⾔都可以构造HTTP请求.本质上就是通过TCPsocket写⼊⼀个符合 HTTP协议规则的字符串.
幂等是指对同一个操作执行一次或多次,产生的结果和副作用完全一致的特性,核心是 “多次执行与单次执行的效果等价”。