我正在设计一个与我的iPhone应用程序相关的Web应用程序。它将大量的URL发送到Web服务器(15000左右。)我 使用NearlyFreeSpeech.net,但它们仅支持最多2000个字符的URL。我想知道是否有人知道支持真正大型网址的网络托管?谢谢,艾萨克
修改:我的程序需要在Safari中打开图片。我可以通过两种方式做到这一点:
你知道,我很懒,而且我知道Mobile Safari可以支持多达8万个字符的URI,所以我认为这是一个很好的方法。如果这有什么问题,请告诉我。
编辑:我最终以正确的POST方式进行了操作。感谢。
答案 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将数据发送到服务器。