Ограничение длины URL-адреса веб-хостинга? - PullRequest
0 голосов
/ 05 апреля 2009

Я разрабатываю веб-приложение, которое привязано к моему приложению для iPhone. Он отправляет огромные URL-адреса на веб-сервер (около 15000). Я был с использованием NearlyFreeSpeech.net, но они поддерживают только URL-адреса длиной до 2000 символов. Мне было интересно, если кто-нибудь знает о веб-хостинге, который будет поддерживать действительно большие URL-адреса? Спасибо, Исаак

Редактировать: Моя программа должна открыть изображение в Safari. Я мог бы сделать это 2 способами:

  • отправьте его в кодировке base64 в URL и просто отобразите параметры запроса.
  • сначала отправьте его на сервер в моем приложении, затем сервер отправит обратно уникальный идентификатор после сохранения фотографии в базе данных, который я добавлю к URL-адресу, который я открою в Safari, чтобы получить фотографию из базы и удалите его из базы данных.

Видите ли, я ленивый, и я знаю, что Mobile Safari может поддерживать URI длиной до 80 000 символов, поэтому я думаю, что это нормальный способ сделать это. Если с этим что-то действительно не так, скажите, пожалуйста.

Редактировать: В итоге я сделал это должным образом POST. Спасибо.

Ответы [ 3 ]

19 голосов
/ 05 апреля 2009

Если вы отправляете URL длиной 15 000 символов, по всей вероятности:

альтернативный текст http://img16.imageshack.us/img16/3847/youredoingitwronga.jpg

Вместо этого используйте что-то вроде HTTP POST.

Ограничения, с которыми вы сталкиваетесь, являются не столько проблемой хостов, сколько тем, что у веб-серверов есть ограничение длины URL. Согласно этой странице , Apache ограничивает вас до 4 тысяч символов, а IIS ограничивает вас 16 тысячами по умолчанию.

3 голосов
/ 05 апреля 2009

Хотя он не дает прямого ответа на ваш вопрос и не имеет официальной максимальной длины URL, браузеры и серверы имеют практические ограничения - см. http://www.boutell.com/newfaq/misc/urllength.html для некоторых деталей. Короче говоря, поскольку IE (по крайней мере, некоторые используемые версии) не поддерживают URL-адреса длиной более 2083 символов, вероятно, целесообразно оставаться ниже этой длины.

2 голосов
/ 05 апреля 2009

Если вам нужно просто открыть его в Safari, а сервер не нужно подключать, почему бы не использовать data: URI ?

Отправка длинных URI по сети в принципе никогда не правильная вещь. Как вы заметили, некоторые веб-хосты не поддерживают длинные URI. Некоторые прокси-серверы могут также подавлять длинные URL-адреса, что означает, что ваше приложение может не работать для пользователей, которые находятся за этими прокси-серверами. Если вам когда-либо понадобится перенести приложение в другой браузер, другие браузеры могут не поддерживать такие длинные URI.

Если вам нужно получить данные на сервер, используйте POST. Да, это дополнительная поездка туда и обратно, но она будет намного надежнее.

Кроме того, если вы загружаете данные на сервер с помощью GET-запроса, то вы уязвимы для всех видов подделок межсайтовых запросов атак; По сути, злоумышленник может заставить пользователя загрузить, скажем, goatse в свой аккаунт, просто заставив его щелкнуть ссылку (возможно, скрытую TinyURL или другой службой сокращения URL-адресов, или просто встроенную в виде ссылки в веб-страницу, когда они не смотрят внимательно на URL, на который нажимают).

Никогда не следует использовать GET для отправки данных на сервер, за исключением параметров запроса, которые на самом деле ничего не меняют на сервере.

...