透视 HTTP 协议
罗剑锋(Chrono)
前奇虎 360 技术专家,Nginx/OpenResty 开源项目贡献者
63943 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
开篇词 (1讲)
透视 HTTP 协议
15
15
1.0x
00:00/00:00
登录|注册

11 | 你能写出正确的网址吗?

host:port
query
path
host:port
scheme
片段标识符
身份信息
查询参数
path
authority
scheme
URN
URL
URI的编码
URI的完整格式
URI的格式
URI
URI的知识关系

该思维导图由 AI 生成,仅供参考

上一讲里我们一起学习了 HTTP 协议里的请求方法,其中最常用的一个是 GET,它用来从服务器上某个资源获取数据,另一个是 POST,向某个资源提交数据。
那么,应该用什么来标记服务器上的资源呢?怎么区分“这个”资源和“那个”资源呢?
经过前几讲的学习,你一定已经知道了,用的是 URI,也就是统一资源标识符Uniform Resource Identifier)。因为它经常出现在浏览器的地址栏里,所以俗称为“网络地址”,简称“网址”。
严格地说,URI 不完全等同于网址,它包含有 URL 和 URN 两个部分,在 HTTP 世界里用的网址实际上是 URL——统一资源定位符Uniform Resource Locator)。但因为 URL 实在是太普及了,所以常常把这两者简单地视为相等。
不仅我们生活中的上网要用到 URI,平常的开发、测试、运维的工作中也少不了它。
如果你在客户端做 iOS、 Android 或者某某小程序开发,免不了要连接远程服务,就会调用底层 API 用 URI 访问服务。
如果你使用 Java、PHP 做后台 Web 开发,也会调用 getPath()、parse_url() 等函数来处理 URI,解析里面的各个要素。
在测试、运维配置 Apache、Nginx 等 Web 服务器的时候也必须正确理解 URI,分离静态资源与动态资源,或者设置规则实现网页的重定向跳转。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

URI是HTTP协议中用来标识资源位置或名称的重要组成部分,也被称为网址。文章介绍了URI的基本组成和格式,包括scheme、host:port、path和query四个部分。其中,scheme表示使用的协议,host:port表示资源所在的主机名和端口号,path表示资源位置,query用于附加额外的修饰参数。通过实例分析,读者可以了解URI的不同形式和特点,以及在HTTP报文中的表现。 此外,还介绍了URI的完整格式,包括身份信息和片段标识符的部分,以及URI的编码机制。文章强调了URI的重要性,对于理解HTTP和网络应用至关重要。总结来说,URI是用来唯一标记服务器上资源的一个字符串,通常也称为URL;它由scheme、host:port、path和query四个部分组成,有的可以省略;在URI里对特殊字符和汉字必须要做编码,否则服务器收到HTTP报文后会无法正确处理。 此外,文章提出了两个课下作业问题,分别是关于浏览器为何没有在请求行里使用完整的URI以及URI的查询参数和头字段的区别。这些问题可以引发读者的思考和讨论,加深对URI的理解。文章内容丰富,涵盖了URI的基本知识和相关技术细节,适合对HTTP协议和网络应用感兴趣的读者阅读学习。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《透视 HTTP 协议》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(68)

  • 最新
  • 精选
  • Bayes
    escape已经被废弃了,我补充一下encodeURI的原理。 把字符(unicode)编码成utf-8,utf-8是用1-4个字节表示的,所以每个字节转换成16进制并在前面用百分号(%)连接,最后并把每个字节转换的结果连接起来。

    作者回复: 感谢补充。

    2019-09-08
    5
    72
  • 第二个问题: 一个是属于header的参数,一个是属于body参数

    作者回复: 不完全正确。 我是这样理解的: query参数针对的是资源(uri),而字段针对的是本次请求,也就是报文。 一个是长期、稳定的,一个是短期、临时的。

    2019-06-21
    39
  • -W.LI-
    老师好!我有个问题。之前说了DNS域名解析成IP有可能解析到CDN服务器的IP。然后CDN服务器就是离用户越近效果越好。所以在DNS域名解析的时候会优先解析到最近的IP是么?如果是的话DNS服务器又是怎么判断近和远的么?谢谢老师

    作者回复: 如果网站使用了cdn就会解析到cdn,否则就是网站自己的服务器。 判断远近很复杂,也是cdn的核心技术之一,术语叫GSLB。简单来说,就是看ip地址,然后有一个对照表,就知道在哪里了。

    2019-06-22
    22
  • 尔冬橙
    query太长,是可以用post方法放到body里?小贴士里写的是get?意思是get也可以在body里携带数据?

    作者回复: 1.是的 2.body数据与get/post无关,只是多年来的应用习惯post带数据,造成了误解。

    2020-02-17
    3
    18
  • xmr
    url带www和不带有什么区别? 比如http://www.baidu.com和http://baidu.com有什么区别?

    作者回复: 这是两个不一样的域名,但可能解析后是一个ip地址。

    2019-06-25
    2
    14
  • 大小兵
    1: 因为在请求头的字段中都有,没必要重复 2: 因该是通过最开始的?和每个KV中间的&来区别

    作者回复: 回答正确,但关于字段和query参数的区别可以再多说一些。

    2019-06-21
    13
  • 尔冬橙
    老师可以讲讲web里的绝对路径和相对路径么,还有restful。。感觉有点迷糊

    作者回复: 1.可以拿磁盘文件系统来对比理解。绝对路径就是从web服务器的根目录开始的文件查找路径,相对路径是以当前页面的路径为基准,使用“.”“..”来查找文件。一般多用相对路径,写起来比较方便。 2.RESTful是一种Web API设计风格,以http协议传输数据,接口使用uri,使用get/post等方法来表示操作。和WebService、gRPC不同,它不是强制的,只是一种指导意见,遵守它可以写出易理解、易维护的Web服务

    2019-12-12
    10
  • Jaising
    请罗老师解释下原因: Chrome是不是对URL做了Scheme和Host等识别,下面几个URL都可以访问到资源 file:///D:/http_study/www/ ——省略Host可以 file://D:/http_study/www/ ——省略Host和根路径可以 file:/D:/http_study/www/ ——这个是为什么呢? D:/http_study/www/ ——省略Scheme和Host可以 但是省略Scheme是不行的: :///D:/http_study/www/ 可是如果使用Http协议的话,就可以省略Scheme: ://nginx.org

    作者回复: 为了方便用户使用,浏览器会有一些容错处理,可以输入不同太规范的uri,但我们自己写程序还是要尽量按照标准来。

    2019-08-26
    9
  • 壹笙☞漂泊
    课后题: 1、不需要重复写,在head里面有的 2、字段是针对这次请求的,query是针对访问的资源 总结: 1、URI常用的形式: scheme :// host:port path ? query scheme:协议名 host:port 资源所在主机名,地址+端口,如果不写端口,浏览器使用默认的端口 path:资源所在位置,必须以“/”开始 query: 查询参数,以“?”开始,但不包含“?”。key=value字符串,用&连接 eg: https://search.jd.com/Search?keyword=openresty&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=openresty&psort=3&click=0 2、URI的完整格式 scheme :// user:passwd@ host:port path ? query #fragment User:passwd@ : 身份信息,但是不推荐这样使用,泄露重要信息 #fragment :片段标识符。标识URI所定位的资源内部的一个锚点,浏览器可以跳转到它指示的位置。服务器看不到#fragment 3、URI的编码 直接把非ASCII 码或特殊字符转换成十六进制字节值,然后前面加一个“%”,中文、日文等通常使用UTF-8编码后再转义。

    作者回复: 总结的非常好,赞!

    2019-06-25
    9
  • 业余草
    这门课程的质量还可以,期待疯狂更新!

    作者回复: thanks。

    2019-06-21
    9
收起评论
显示
设置
留言
68
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部