RFC Errata

Errata Search

Source of RFC  
Summary Table Full Records

RFC 3986, "Uniform Resource Identifier (URI): Generic Syntax", January 2005

Note: This RFC has been updated by RFC 6874, RFC 7320, RFC 8820

Area Assignment: app

Errata ID: 3330
Status: Rejected
Type: Technical
Publication Format(s) : TEXT

Reported By: David Sheets
Date Reported: 2012-08-29
Rejected by: Barry Leiba
Date Rejected: 2012-09-04

Section Appendix A says:

fragment      = *( pchar / "/" / "?" )

It should say:

fragment      = *( pchar / "/" / "?" / "#" )


Appendix B's regex doesn't fail with this correction. Additionally, this gives freedom to media type designers. Specifically, the ((path?),(query?),(fragment?)) subsyntax could be reused in hypermedia type design as the "?" delimiter transitions path => query and the "#" delimiter transitions query => fragment. It also follows the pattern:
path = *( pchar / "/" )
query = *( pchar / "/" / "?" )
fragment = *( pchar / "/" / "?" / "#" )
This is something that should be looked at further, but it is not an error in the spec and is unlikely to be a direct change we'd make in a revision of the spec.

Some applications at the time the specification was written parsed the fragment from left to right, and others parsed from right to left, which means they would get different results if "#" were allowed inside of a fragment. That's why it was not allowed in the ABNF. It's possible that situation has improved in the years since, but it would be difficult to test so many implementations. Deciding the right way to handle this goes beyond what can be handled by an erratum.

Report New Errata

Advanced Search