Я разрабатываю веб-приложение, связанное с моим приложением для iPhone. Он отправляет на веб-сервер очень большие URL-адреса (около 15000). Я был с помощью NearlyFreeSpeech.net, но они поддерживают только URL-адреса до 2000 символов. Мне было интересно, знает ли кто-нибудь о веб-хостинге, который будет поддерживать действительно большие URL-адреса? Спасибо, Исаак
Изменить: моей программе необходимо открыть изображение в Safari. Я мог сделать это двумя способами:
- отправить его в кодировке base64 в URL-адресе и просто повторить параметры запроса.
- сначала отправьте его на сервер в моем приложении, затем сервер отправит обратно уникальный идентификатор после сохранения фотографии в базе данных, который я бы добавил к URL-адресу, который я бы открыл в Safari, который извлек фотографию из базы данных и удалил ее из базы данных.
Видите ли, я ленив и знаю, что Mobile Safari может поддерживать URI до 80 000 символов, так что я думаю, что это нормальный способ сделать это. Если с этим действительно что-то не так, скажите, пожалуйста.
Изменить: я сделал это правильным способом POST. Спасибо.
Ответ 1 · рейтинг 19 · ceejayoz
Если вы отправляете URL-адреса длиной 15 000 символов, по всей вероятности:
альтернативный текст http://img16.imageshack.us/img16/3847/youredoingitwronga.jpg а>
Вместо этого используйте что-то вроде HTTP POST.
Ограничения, с которыми вы сталкиваетесь, не столько проблема хостов, сколько тот факт, что веб-серверы имеют ограничение на длину URL-адреса. Согласно этой странице, Apache ограничивает вас примерно 4 КБ символов, а IIS ограничивает вас до 16k по умолчанию.
Ответ 2 · рейтинг 3 · Bobby Jack
Хотя он не дает прямого ответа на ваш вопрос и не существует официальной максимальной длины URL-адреса, браузеры и серверы имеют практические ограничения - см. http://www.boutell.com/newfaq/misc/urllength.html для получения дополнительной информации. Короче говоря, поскольку IE (по крайней мере, некоторые используемые версии) не поддерживают URL-адреса длиной более 2083 символа, вероятно, будет разумным оставаться ниже этой длины.
Ответ 3 · рейтинг 2 · Brian Campbell
Если вам нужно просто открыть его в Safari, и сервер не должен быть задействован, почему бы не использовать _ 1_ URI?
Отправка длинных URI по сети никогда не будет правильным решением. Как вы заметили, некоторые веб-хосты не поддерживают длинные URI. Некоторые прокси-серверы также могут подавляться длинными URL-адресами, что означает, что ваше приложение может не работать для пользователей, которые находятся за этими прокси. Если вам когда-нибудь понадобится перенести приложение в другой браузер, другие браузеры могут не поддерживать URI так долго.
Если вам нужно передать данные на сервер, используйте POST. Да, это дополнительный круговой обход, но он будет намного надежнее.
Кроме того, если вы загружаете данные на сервер с помощью запроса GET, вы уязвимы для всех видов перекрестных -подделка запросов сайта атаки; По сути, злоумышленник может обманом заставить пользователя загрузить, скажем, goatse в свою учетную запись, просто заставив его щелкнуть ссылку (возможно, скрытую TinyURL или другой сервис сокращения URL-адресов, или просто встраивают в виде ссылки на веб-страницу, когда они не смотрят внимательно на URL-адрес, на который они нажимают).
Вы никогда не должны использовать GET для отправки данных на сервер, кроме параметров запроса, которые фактически ничего не меняют на сервере.