URI基础

作者: 五月笙 | 来源:发表于2020-07-03 16:39 被阅读0次

    URI、URL和URN

    URI(Uniform Resource Identifier) : 标识

    URL(Uniform Resource Locator) : 定位

    URN(Uniform Resource Name) : 名称

    
    例子:
    
    http://example.org/absolute/URI/with/absolute/path/to/resource.txt
    
    ftp://example.org/resource.txt
    
    urn:issn<XSLT>:1535-3613
    
    

    组成

    例如:

    foo://username:password@example.com:8042/over/there/index.dtb?type=animal;name=ferret#nose

    \ / ________________/_________/ _/ _/ _/ _____________________/ _/

    | | | | | | | |

    | 用户 主机 端口 | | 查询 片段

    | _______________________________/ _____________|____|/

    方案 | | | |

    | 域名 路径 | |

    | | |

    | 路径 可以解释为文件名

    | ___________|____________ |

    / \ / \ |

    urn:example:animal:ferrett:nose 可以解释为扩展名

    http://en.wikipedia.org/wiki/URI#Examples_of_URI_references

    "http" 指定协议名, "en.wikipedia.org"是“典据”, "/wiki/URI"是指向英文维基页面的“路径”,而"#Examples_of_URI_references"是指向英文维基页面相应片段的“URI”

    参考:

    统一资源标志符方案

    百分比编码

    规则

    URL编码格式采用的是ASCII码

    
    RFC3986文档规定,URL中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。
    
    

    参考:RFC3986

    未保留字符:未保留字符不需要百分号编码

    保留字符:具有特殊含义的字符

    ! * ' ( ) ; : @ & = + $ , / ? # [ ]

    不安全字符:直接放在URL中,可能会引起解析程序的歧义,例如:空格,#

    方法

    把字符的ASCII的值表示为两个16进制的数字,然后在其前面放置转义字符("%"),置入URI中的相应位置

    对于非ASCII码字符,需要转换为UTF8字节序

    
    例如 -> "#":
    
    保留字符:书签或锚点
    
    参数传递:%23
    
    示例:https://zh.wikipedia.org/wiki/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E6%A0%87%E5%BF%97%E7%AC%A6#URI%E5%BC%95%E7%94%A8%E7%9A%84%E4%BE%8B%E5%AD%90
    
    

    总结

    
    使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符
    
    

    参考

    统一资源标志符

    统一资源标志符方案

    百分号编码

    统一资源定位符

    网址URL中特殊字符转义编码

    相关文章

      网友评论

          本文标题:URI基础

          本文链接:https://www.haomeiwen.com/subject/gwnsqktx.html