さるへい備忘録

さるへいのやったことを綴っているブログです。基本的にテクノロジーの話題です。

RFC 1808、RFC 3986を見てきたらURLのQueryComponentというものが定義されていて面白かった話

いままでURLの文法をあまり深く考えたことがなかったのですが、よく調べてみると面白かったので紹介します。

ある時、PythonでURLをパースしていたんですが、ドキュメントを見ると

scheme://netloc/path;parameters?query#fragment

上記のようなRFC1808の形に沿ったURLを分解すると書いてあるんですね。

docs.python.org

この、QueryComponentと定義されている ;parameters っていうパラメータですが、僕にとってはすごい初見の話でした。
Pythonのドキュメントには、とりあえずRFC1808に沿ってくれと書いてあるだけで詳細は記載されていません。
仕様を正しく理解してないとバグを埋め込みそうだったので仕様を少し深く調べてみました。

www5d.biglobe.ne.jp

RFC1808の仕様を見てみると、たしかに定義されています。
ですがRFC1738を見てくれとのこと。

http://www5d.biglobe.ne.jp/stssk/nro/rfc1738_j.txt

見てみると、 type=<typecode> といった形で使うと記載されています。
FTPでは僕らのよくつかっているgetパラメータなどが定義されていないように見受けられるので、その変わりですかね。
こちらはFTPのURLの形式のようで、それをRFC1808でも引き継いでいるようですね。

ちなみに現在は最新がRFC3989となっており、しっかりRFC1808の形を引き継いでいてQueryComponentも現役のようです。

tools.ietf.org