整个HTTP使用统一资源标识符(URIs)[RFC3986]作为识别资源([RFC7231]的第2节)的方式。URI引用用于定位请求,指示重定向和定义关系。

    对”URI-reference”, “absolute-URI”, “relative-part”, “scheme”, “authority”, “port”, “host”, “path-abempty”, “segment”, “query”, and “fragment” 的定义采用通用URI语法。”absolute-path”规则是为可以包含一个非空的路径组件的协议元素而定义的。(这个规则与RFC3986中的path-abempty规则略有不同,它允许在引用中使用空路径,而path-absolute规则不允许“//”开头的路径。)”partial-URI”规则是为可以包含一个相对URI但不包含片段组件的协议元素而定义的。

    1. URI-reference = <URI-reference, see [RFC3986], Section 4.1>
    2. absolute-URI = <absolute-URI, see [RFC3986], Section 4.3>
    3. relative-part = <relative-part, see [RFC3986], Section 4.2>
    4. scheme = <scheme, see [RFC3986], Section 3.1>
    5. authority = <authority, see [RFC3986], Section 3.2>
    6. uri-host = <host, see [RFC3986], Section 3.2.2>
    7. port = <port, see [RFC3986], Section 3.2.3>
    8. path-abempty = <path-abempty, see [RFC3986], Section 3.3>
    9. segment = <segment, see [RFC3986], Section 3.3>
    10. query = <query, see [RFC3986], Section 3.4>
    11. fragment = <fragment, see [RFC3986], Section 3.5>
    12. absolute-path = 1*( "/" segment )
    13. partial-URI = relative-part [ "?" query ]

    HTTP中的每个允许URI引用的协议元素将在其ABNF生成中指示该元素是否允许任何形式的引用(URI引用),仅绝对形式的URI(absolute-URI),仅路径和可选的查询组件,或者上述的一些组合。除非另有说明,否则URI引用将相对于有效的请求URI(5.5节)进行解析。