GAE における URI の長さ制限
最初に断っておくが、RFC では URI の長さについて何の制限も設けていない。RFC 2068 にはこう書かれている。
The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).
制限は特に設けないがサーバ側で扱えないのであれば適切なエラーコードを返しなさい、とのこと。わざわざ大文字の SHOULD(〜するべきである)で念押しして勧告している。
今回のケースはあくまでも Google App Engine(の Google Frontend?)における制限である。というか、以前どこかのサイトで「GAE は 2048 文字まで」という記述を見かけたレベルの知識だったのだが、今回あらためて調べてみると本家の Issues にちゃんと書かれていた。
class InvalidURLError(Error):
"""Raised when the URL given is empty or invalid.
Only http: and https: URLs are allowed. The maximum URL length
allowed is 2048 characters. The login/pass portion is not
allowed. In deployed applications, only ports 80 and 443 for http
and https respectively are allowed.
"""
スキームは http か https、最大長は 2048 文字、ログイン/パスワード部分は不可、そしてデプロイ済みのアプリは 80 か 443 のポートしか許可しない、とのこと。