Есть ли способ преодолеть ограничение в 2 КБ на длину URL? - PullRequest
3 голосов
/ 29 мая 2009

Я думаю, что длина URL может быть только около 2000 символов. В противном случае он закроет некоторые версии IE. Есть ли способ преодолеть эту проблему?

Сначала я думал о tinyurl, но tinyurl на самом деле сразу же перенаправляет на более длинный URL, так что, вероятно, тоже не удастся.

Обновление:

Мне нужен такой длинный URL, потому что мне нужно, чтобы люди могли добавить его в закладки или отправить другим людям по электронной почте.

Ответы [ 5 ]

5 голосов
/ 29 мая 2009

По причинам, связанным с закладками, вы можете хранить хэш строки аргумента в базе данных, а также в списке аргументов. Таким образом, когда кто-то что-то делает закладку, он получает закладку с хешем, и ваше внутреннее программное обеспечение ищет соответствующие аргументы и получает их.

По сути, вы катаете свой собственный маленький URL.

Если кто-то еще захочет добавить в закладки страницу с такими же аргументами, то хеш будет таким же.

Единственная проблема заключается в том, что ваша таблица хешей вырастет довольно большой, и многие из этих "закладок" могут никогда не использоваться.

5 голосов
/ 29 мая 2009

Вот для чего POST;)

3 голосов
/ 29 мая 2009

HTML POST предназначен для передачи больших объемов данных. Вы должны посмотреть на это.

2 голосов
/ 29 мая 2009

Как выглядят ваши URL? Может быть, вы могли бы использовать gzip или md5, чтобы сократить их, или сохранить их в базе данных и поместить идентификатор строки в URL?

1 голос
/ 29 мая 2009

Нет реалистичного способа обойти это - это не ограничение в спецификациях или чем-то в этом роде, а в самом IE и, предположительно, как распределяется URL (я считаю, что на самом деле ограничение составляет 2083 символа, для некоторых причина).

Поскольку IE требуется, чтобы URL-адрес целиком отправлялся на сервер, я не могу придумать какие-либо хитрые уловки, которые позволили бы вам обойти его. Некоторые варианты, которые я рассмотрел, состояли в том, чтобы отправить параметры запроса через POST вместо GET (но это часто не взаимозаменяемо на стороне сервера, и клиенты будут воспринимать это по-другому, так как URL-адрес не может появиться в гиперссылке или быть добавлен в закладки или введенные вручную, и если пользователь хочет обновить, он получит предупреждение «отправить информацию еще раз», что имеет смысл, поскольку POST предназначен для обновления информации на удаленном сервере, и , он будет работать только в том случае, если это строка запроса, выдвигающая ее за пределы, а не какой-то нечестивый URL). В качестве альтернативы вы могли бы разделить URL-адрес на части, установив часть переполнения в cookie-файле, а затем сделать запрос к заглушке URL-адреса, который достаточно умен, чтобы извлечь контекст из cookie-файла и добавить его к фактически полученному URL-адресу. Однако это опять-таки усложняет обработку на сервере, вероятно, слишком много для использования за пределами тривиального приложения, а также означает, что вы не можете поместить этот URL-адрес в гиперссылки, закладки или что-то еще, поскольку важной частью этого является состояние клиента.

По сути, все остальное будет связано с переписыванием сервера, чтобы каким-то образом собрать воедино дополнительную информацию, и если вы сможете сделать это, то сможете просто изменить схему URL-адреса, чтобы все было менее 2000 символов. Так что нет - нет реального способа обойти это.

(Хотя, если бы вы могли использовать что-то вроде tinyurl, чтобы действовать как прокси , а не выдавать браузер, перенаправляющий на URL, это могло бы работать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...