有没有办法克服URL长度的2k字符限制?

时间:2009-05-29 11:12:33

标签: url

我认为URL长度只能是2000个左右。否则,它会阻塞某些版本的IE。有没有办法克服这个问题?

起初我在考虑tinyurl,但tinyurl实际上会立即重定向到更长的URL,因此可能也会失败。

更新

我需要这么长的网址,因为我需要能够让人们为网址添加书签或通过电子邮件将其发送给其他人。

5 个答案:

答案 0 :(得分:5)

这就是POST的用途;)

答案 1 :(得分:5)

对于书签原因,您可以在数据库和参数列表中存储参数字符串的哈希值。这样当somone书签时,他们会得到带有哈希的书签,而你的内部软件会查找相应的参数并获取它们。

你实际上在滚动你自己的小网址。

如果其他人想要使用相同的参数为页面添加书签,那么哈希将是相同的。

唯一的问题是你的哈希表会变得很大,而且许多这些“书签”可能永远不会被使用。

答案 2 :(得分:3)

HTML POST旨在传输大量数据。你应该看一下。

答案 3 :(得分:2)

您的网址是什么样的? 也许你可以使用gzip或md5来缩短它们,或者将它们存储在数据库中并将行的id放在url中?

答案 4 :(得分:1)

没有现实的方法来解决这个问题 - 这不是规格或类似的限制,而是在IE本身,大概是如何分配URL(我相信限制实际上是2083个字符,对于某些人来说原因)。

由于IE需要一次性发送到服务器的URL,我想不出任何能让你解决它的聪明技巧。我考虑过的一些选项是通过POST而不是GET发送查询参数(但这在服务器端通常是不可互换的,客户端会以不同的方式对待这一点,因为URL不能出现在超链接中或被加入书签或者手动输入,如果用户想要刷新,他们将获得“再次发送信息”警告,这是有道理的,因为POST是为了更新远程服务器上的信息,它只能工作如果是查询字符串超出限制而不是某些不合适的URL)。或者,您可以将URL分块,在cookie中设置溢出部分,然后向URL的存根发出请求,这足以将上下文从cookie中拉出并将其附加到实际接收的URL。然而,这再次使服务器上的处理变得复杂,可能远远超出了普通应用程序之外的使用,并且仍然意味着您不能将该URL放在超链接或书签或其他任何内容中,因为它的一个重要部分是客户端状态。 / p>

基本上,其他一切都涉及重写服务器以某种方式将额外信息拼凑在一起,如果你能够做到这一点,那么你应该能够简单地改变URL方案,使一切都低于2000个字符。所以没有 - 没有真正的解决方法。

(虽然如果您可以使用tinyurl之类的东西充当代理而不是发布浏览器重定向到URL,那可能会有效。)