网页寄存网址长度限制?

时间:2009-04-05 02:00:12

标签: url web-hosting

我正在设计一个与我的iPhone应用程序相关的Web应用程序。它将大量的URL发送到Web服务器(15000左右。)我 使用NearlyFreeSpeech.net,但它们仅支持最多2000个字符的URL。我想知道是否有人知道支持真正大型网址的网络托管?谢谢,艾萨克

修改:我的程序需要在Safari中打开图片。我可以通过两种方式做到这一点:

  • 在URL中发送base64编码,只回显查询参数。
  • 首先将它发送到我的应用程序中的服务器,然后服务器会在将照片存储到数据库后发回一个唯一的ID,我将附加到一个URL,我将在Safari中打开,从数据库中检索照片并从数据库中删除它。

你知道,我很懒,而且我知道Mobile Safari可以支持多达8万个字符的URI,所以我认为这是一个很好的方法。如果这有什么问题,请告诉我。

编辑:我最终以正确的POST方式进行了操作。感谢。

3 个答案:

答案 0 :(得分:19)

如果您要发送15,000个字符长的网址,那么:

alt text http://img16.imageshack.us/img16/3847/youredoingitwronga.jpg

使用类似HTTP POST的内容。

您遇到的限制并不是主机的问题 - 更重要的是Web服务器对URL的长度有限制。根据{{​​3}},Apache将您限制为大约4k个字符,IIS默认将您限制为16k。

答案 1 :(得分:3)

虽然它没有直接回答您的问题,并且没有官方最大长度的网址,但浏览器和服务器都有实际限制 - 有关详细信息,请参阅http://www.boutell.com/newfaq/misc/urllength.html。简而言之,由于IE(至少使用某些版本)不支持超过2,083个字符的URL,因此保持低于该长度可能是明智的。

答案 2 :(得分:2)

如果您只需要在Safari中打开它,并且服务器不需要参与,为什么不使用data: URI

通过网络发送长URI基本上不是正确的事情。如您所见,某些Web主机不支持长URI。某些代理服务器也可能会阻塞长URL,这意味着您的应用可能不适用于这些代理背后的用户。如果您需要将应用程序移植到其他浏览器,则其他浏览器可能不支持长的URI。

如果您需要将数据提供给服务器,请使用POST。是的,这是一次额外的往返旅行,但它会更加可靠。

此外,如果您使用GET请求将数据上传到服务器,那么您很容易受到各种cross-site request forgery攻击;基本上,攻击者只需让用户点击链接(可能隐藏在TinyURL或其他网址缩短服务中,或者只是作为网络中的链接嵌入),就可以欺骗用户上传,例如,上传到他们的帐户页面,当他们不仔细查看他们点击的网址时。

除了在服务器上没有实际更改任何内容的查询参数之外,您不应该使用GET将数据发送到服务器。

相关问题