GAE における URI の長さ制限

2014年9月23日 23:58

最初に断っておくが、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 のポートしか許可しない、とのこと。