💡推荐
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击跳转到网站】
HTTP请求(Request)
认识URL
URL基本格式
平时我们俗称的"⽹址"其实就是说的URL(Uniform Resource Locator统⼀资源定位符)
互联⽹上的每个⽂件都有⼀个唯⼀的URL,它包含的信息指出⽂件的位置以及浏览器应该怎么处理
⼀个具体的URL:(可以看到,在这个URL中有些信息被省略了)
1 https://v.bitedu.vip/personInf/student?userId=10000&classId=100
(1)协议名称:https :
协议⽅案名.常⻅的有http和https,也有其他的类型.(例如访问mysql时⽤的jdbc:mysql )
(2)身份认证信息:user:pass
登陆信息,现在已经废弃了
(3)IP地址/域名:v.bitedu.vip
服务器地址.此处是⼀个"域名",域名会通过DNS系统解析成⼀个具体的IP地址.(通过ping命令可以看到, v.bitedu.vip 的真实IP地址为 118.24.113.28 )
(4)端口号:(可省略)
上⾯的URL中端⼝号被省略了.当端⼝号省略的时候,浏览器会根据协议类型⾃动决定使⽤哪个端⼝.例如http协议默认使⽤80端⼝,https协议默认使⽤443端⼝,
(5)路径:(path)/personInf/student :带层次的⽂件路径.
描述了这个机器的这个程序,上面管理的哪个程序
(6)查询字符串:(query string):userId=10000&classId=100
本质是⼀个键值对结构,键值对之间使⽤&分隔,键和值之间使⽤=分隔.
此处键有啥,值有啥都是根据程序员自己定义的
(7)片段标识符 :#
表示一个网页中的某个部分
此URL中省略了⽚段标识.⽚段标识主要⽤于⻚⾯内跳转.(例Vue官⽅文档:https://cn.vuejs.org/v2/guide/#%E8%B5%B7%E6%AD%A5,通过不同的⽚段标识跳转到⽂档的不同章节)
扩展:使⽤ping命令查看域名对应的IP地址.
1. 在开始菜单中输⼊ cmd ,打开 命令提⽰符
2. 在cmd中输⼊ ping v.bitedu.vip ,即可看到域名解析的结果.
PS:有的电脑上ping命令会报错 ping 不是内部或外部命令,也不是可运⾏的程序或批处理⽂件 。这种情况是因为有的Windows10默认没有启⽤ping命令.
百度搜索windows10 启⽤ ping 即可
URL中的可省略部分
• 协议名:可以省略,省略后默认为http://
• ip地址/域名:在HTML中可以省略(⽐如img,link,script,a标签的src或者href属性).省略后表⽰服务器的ip/域名与当前HTML所属的ip/域名⼀致.
• 端⼝号:可以省略.省略后如果是http协议,端⼝号⾃动设为80;如果是https协议,端⼝号⾃动设为443.
• 带层次的⽂件路径:可以省略.省略后相当于/.有些服务器会在发现/路径的时候⾃动访问/index.html
• 查询字符串:可以省略
• ⽚段标识:可以省略
关于URLencode
像/ ? : 等这样的字符,已经被url当做特殊意义理解了.因此这些字符不能随意出现.⽐如,query string里value部分,一旦也包含这些符号,就会使url的解析出现问题,那么构造http请求就必须先对特殊字符进⾏转义urlencode.
⼀个中⽂字符由UTF-8/GBK这样的编码⽅式构成,虽然在URL中没有特殊含义,但是仍然需要进⾏转义.否则浏览器可能把UTF-8/GBK编码中的某个字节当做URL中的特殊符号.
转义的规则如下:
将需要转码的字符转为16进制,然后从右到左,取4位(不⾜4位直接处理),每2位做⼀位,前⾯加上%,编码成%XY格式
例如:
"+"被转义成了"%2B"(“+”的acsii就是“2B”)
有些时候,浏览器为了让用户看起来方便,显示的是转码之前的字符,而实际上发送的是转码之后的
例子:
浏览器显示:
但是复制URL下来却是:
urldecode就是urlencode的逆过程