【问题标题】:Web Hosting URL Length Limit?虚拟主机 URL 长度限制?
【发布时间】:2010-10-17 14:54:13
【问题描述】:

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

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

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

你看,我很懒,而且我知道 Mobile Safari 可以支持最多 80 000 个字符的 URI,所以我认为这是一个不错的方法。如果这真的有什么问题,请告诉我。

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

【问题讨论】:

标签: url web-hosting


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您要发送 15,000 个字符长的 URL,则很可能:

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

    改用 HTTP POST 之类的东西。

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

    【讨论】:

    • IIS 6 中的硬限制是 32,767 个字符。
    • 我之前已经达到了这个上限 :( 使用 Google 的图表 API
    • 哈哈。建议:保护这篇文章免受 LOL cmets 的伤害。
    • @ceejayoz:我在哪里更改 IIS 限制?
    • @Kumaran 我认为你没有抓住重点。你做错了。
    【解决方案3】:

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

    通过网络发送长 URI 基本上从来都不是正确的做法。正如您所注意到的,一些网络主机不支持长 URI。一些代理服务器也可能会阻塞长 URL,这意味着您的应用可能不适用于这些代理背后的用户。如果您需要将应用移植到其他浏览器,其他浏览器可能不支持那么长的 URI。

    如果您需要将数据上传到服务器,请使用 POST。是的,这是一个额外的往返行程,但它会更可靠。

    另外,如果您使用 GET 请求将数据上传到服务器,那么您很容易受到各种cross-site request forgery 攻击;基本上,攻击者可以通过让用户点击链接(可能被TinyURL 或其他 URL 缩短服务隐藏,或者只是作为链接嵌入网页中的链接)来欺骗用户上传,比如说,goatse。他们不会仔细查看他们点击的 URL)。

    您不应该使用 GET 向服务器发送数据,除了查询参数实际上不会改变服务器上的任何内容。

    【讨论】:

    • 你好,这就是重点——但在 openURL 中有一个超级烦人的错误:它不允许你打开数据:uris。因此,我的网站采用 Base64 编码数据并将其转换为数据 uri 并将您重定向到那里:(
    • 如果他们不支持,那么我认为您需要使用 POST 路线。 URL 中的大量数据只会给您带来各种兼容性问题,而从 GET 请求中镜像回数据会导致各种跨站点请求伪造问题。
    猜你喜欢
    • 1970-01-01
    • 2011-03-25
    • 2019-11-29
    • 2013-02-05
    • 2012-01-29
    • 1970-01-01
    • 2019-11-03
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多