Standardising the “URL”

Mattias Geniar, Wednesday, February 1, 2017 - last modified: Tuesday, January 31, 2017

You'd think that the concept of "a URL" would be pretty clearly defined by now, with the internet being what it is today. Well, turns out -- it isn't.

But Daniel Stenberg, from curl fame, is trying to fix that.

This document is an attempt to describe where and how RFC 3986 (86), RFC 3987 (87) and the WHATWG URL Specification (TWUS) differ. This might be useful input when trying to interop with URLs on the modern Internet.

This document focuses on network-using URL schemes (http, https, ftp, etc) as well as 'file'.
URL Interop

What really strikes me as odd is the interoperability comparison for each "fragment" in the URL;

Component Value Known interop issues exist
scheme http no
divider :// YES
userinfo user:password YES
hostname www.example.com YES
port number 80 YES
path index.html YES
fragment top no

It's amazing a "URL" even works.

I've said it before and I'll say it again: the internet is held together with duct tape. I hope this proposal gets somewhere, it'll make parsing URLs a whole lot easier and more reliable.

Source: URL Interop


Hi! My name is Mattias Geniar. I'm a Support Manager at Nucleus Hosting in Belgium, a general web geek, public speaker and podcaster. Currently working on DNS Spy. Follow me on Twitter as @mattiasgeniar.

I respect your privacy and you won't get spam. Ever.
Just a weekly newsletter about Linux and open source.

SysCast podcast

In the SysCast podcast I talk about Linux & open source projects, interview sysadmins or developers and discuss web-related technologies. A show by and for geeks!

cron.weekly newsletter

A weekly newsletter - delivered every Sunday - for Linux sysadmins and open source users. It helps keeps you informed about open source projects, Linux guides & tutorials and the latest news.

Share this post

Did you like this post? Will you help me share it on social media? Thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *