URI和URL

  1. URI:统一资源标识符(Uniform Resource Identifier)

  2. URL:统一资源定位符(Uniform Resource Locator),本质是一个字符串,作用是唯一地标记资源的位置或者名字。

  3. URL是URI的一个子集

URI详细介绍

URI的组成

scheme、host:port 、path 、query 和fragment 5个部分组成。

  1. 第一部分

    • schema,“协议名”,包括 http,https,ftp,ldap,file,news 等方法
    • :// 是分隔符
  2. 第二部分

    • “authority”的部分,表示资源所在的主机名
    • 形式为:host:post 主机名+端口号
    • 主机名,ip地址或域名
      1. 对于 file协议,主机名可以省略,为localhost
      2. 对于 http,https协议,主机名不可省略
    • path 标记资源所在的位置,包含 /
  3. 第三部分

    • 参数,用“?”开始,但是不包含“?”,表示对资源的额外要求
    • 格式:“key=value”字符串,用“&”连接
  4. 第四部分

    • 身份信息“user:passwd@” ,表示主机登录的用户名和密码
    • 明文展示,有安全隐患,postman测试是可使用
  5. 第五部分

    • 片段标识符“#fragment”,它是 URI 所定位的资源内部的一个“锚点”或者说是“标签”。
    • 浏览器可以在获取资源后直接跳转到它指示的位置。
    • 只给浏览器看,不发送给客户端。

URI的查询参数

  1. 方法1:使用“协议名 + 主机名 + 路径”的方式
  2. 方法2:适用“协议名 + 主机名 + 路径 + 参数”的方式

URI的编码

  1. 只能使用 ascii 编码
  2. 对于 ascii 字符集之外,及特殊字符使用 转义,把它们转换成与 URI 语义不冲突的形式
  3. 转义规则:把字符(unicode)编码成 utf-8,utf-8用1-4字节表示,每个字节转换成十六进制,前面再加上一个“%”,最后把每个字节转换后的结果拼接起来。
    • 空格被转义成“%20”
    • “?”被转义成“%3F”
    • 中文、日文等则通常使用 UTF-8 编码后再转义,例如“银河”会被转义成“%E9%93%B6%E6%B2%B3”

疑问

  1. HTTP 协议允许在在请求行里使用完整的 URI,但为什么浏览器没有这么做呢?

    • 因为请求头字段里都有,没有必要重复。
  2. URI 的查询参数和头字段很相似,都是 key-value 形式,都可以任意自定义,那么它们在使用时该如何区别呢?

    • query 参数针对的是资源(uri),而字段针对的是本次请求,也就是报文。
    • 一个是长期、稳定的,一个是短期、临时的。

9 "网址"--URI的更多相关文章

  1. 表单验证Jquery扩展方法类

    /** 表单数据验证 **/ $.fn.Validform = function () { var Validatemsg = ""; var Validateflag = tru ...

  2. Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

    现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent ...

  3. 【5】图解HTTP 笔记

    坚持.聪明.不畏困难,我将取得最后的胜利. 第一章 了解 Web 以网络基础 1. HTTP ( HyperText Transfer Protocol ): 超文本传输协议. 2. 通讯方式: 3. ...

  4. Webservice 实践

    摘要: 实现webservice,spring ws,XFire实现方法未实现.(记得补上~) 1 概述 1.1关键技术 SOAP:简单对象存取协议.是XML Web Service 的通信协议.当用 ...

  5. jquery表单验证源码

    /**数据验证完整性**/$.fn.Validform = function () {    var Validatemsg = "";    var Validateflag = ...

  6. [android] 隐式意图激活另外一个activity

    随着api的升级,系统的很多应用包名和类名都改掉了,所以很多时候,打开系统应用的时候会报错,隐式意图就是解决组件之间松耦合,描述动作行为 获取Intent对象,通过new出来 调用Intent对象的s ...

  7. 2Servlet笔记

    1.静态页面(html) 2.动态 用户可以输入数据,和页面交互. 3 BS和CS的区别 BS :Browser Server(WEB 服务器)   CS : Client(qq tcp/ip协议) ...

  8. 公用的web服务

    1.http://www.webxml.com.cn/zh_cn/index.aspx 1.1.www.webxml.com.cn/WebServices/WeatherWebService.asmx ...

  9. jquery表单数据验证扩展方法

    /** 表单数据验证 **/ $.fn.Validform = function () { var Validatemsg = ""; var Validateflag = tru ...

  10. 纯手写wcf代码,wcf入门,wcf基础教程

    1.定义服务协定     =>定义接口 using System.ServiceModel; namespace WcfConsole { /// <summary> /// 定义服 ...

随机推荐

  1. 【实践篇】DDD脚手架及编码规范

    一.背景介绍 我们团队一直在持续推进业务系统的体系化治理工作,在这个过程中我们沉淀了自己的DDD脚手架项目.脚手架项目是体系化治理过程中比较重要的一环,它的作用有两点: (1)可以对新建的项目进行统一 ...

  2. 问题排查:nginx的反向代理感觉失效了一样

    背景 最近,负责基础设施的同事,要对一批测试环境机器进行回收,回收就涉及到应用迁移,问题是整个过程一团乱.比如服务器A上一堆应用要调用服务器B上一堆服务,结果服务器B被回收了,然后服务器A上一堆应用报 ...

  3. Java NIO 图解 Netty 服务端启动的过程

    一.启动概述 了解整体Netty常用的核心组件后,并且对比了传统IO模式.在对比过程中,找到了传统IO对应Netty中是如何实现的.最后我们了解到在netty中常用的那些组件. 本文在了解下这些核心组 ...

  4. VisionPro学习笔记(3)——BeadInspectTool

    如果需要了解其他图像处理的文章,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice ...

  5. 如何成功将 API 客户的 transformer 模型推理速度加快 100 倍

    Transformers 已成为世界各地数据科学家用以探索最先进 NLP 模型.构建新 NLP 模块的默认库.它拥有超过 5000 个预训练和微调的模型,支持 250 多种语言,任君取用.无论你使用哪 ...

  6. 【RocketMQ】Rebalance负载均衡总结

    消费者负载均衡,是指为消费组下的每个消费者分配订阅主题下的消费队列,分配了消费队列消费者就可以知道去消费哪个消费队列上面的消息,这里针对集群模式,因为广播模式,所有的消息队列可以被消费组下的每个消费者 ...

  7. 其它——windows提示缺少VCRUNTIME140.dll错误

    文章目录 一 原因 二 解决方法一 三 解决方法二 缺少了Microsoft.Net.Framework的安装 一 原因 最新在系统安装一些软件发现提示 这是因为缺少了一下windows运行需要的库 ...

  8. sql分组后排序计算

    用法:RANK() OVER(PARTITION BY 分组字段 ORDER BY 排序字段 ) 例子:要得到n4列 ---创建测试数据create table tb(n1 varchar2(40) ...

  9. MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-1

    一个5.7版本的MySQL单点数据库,版本信息是: Server version: 5.7.31-log MySQL Community Server (GPL) 数据量已达到760G,日常存在性能问 ...

  10. 算法学习笔记(3.1): ST算法

    ST表 在RMQ(区间最值)问题中,著名的ST算法就是倍增的产物.ST算法可以在 \(O(n \log n)\) 的时间复杂度能预处理后,以 \(O(1)\) 的复杂度在线回答区间 [l, r] 内的 ...