【问题标题】:Query string: Can a query string contain a URL that also contains query strings?查询字符串:查询字符串是否可以包含同时包含查询字符串的 URL?
【发布时间】:2011-05-14 00:50:36
【问题描述】:

例子:

http://foo.com/generatepdf.aspx?u=http://foo.com/somepage.aspx?color=blue&size=15

我添加了 iis 标签是因为我猜它还取决于您使用的服务器技术?

【问题讨论】:

    标签: asp.net html iis


    【解决方案1】:

    您可能希望对查询字符串中的 url 进行 UrlEncode。

    【讨论】:

    • 我发现对 URL 进行 Base64 编码更可靠。我遇到了关于+ 和空间无法区分的问题。
    【解决方案2】:

    不,但您可以对 url 进行编码,然后再对其进行解码。

    【讨论】:

      【解决方案3】:

      服务器技术不应该有所作为。

      当您将值传递给查询字符串时,您需要url encode 名称/值对。如果您想传入一个包含特殊字符(例如问号 (?))的值,您只需将该字符编码为 %3F。如果您随后需要将另一个查询字符串递归地传递给编码的 url,则需要对 url 进行双/三/等编码,从而生成原始 ?变成%253F、%25253F等

      【讨论】:

        【解决方案4】:

        是的,据我所知,根据RFC 3986: Uniform Resource Identifier (URI): Generic Syntax(从 2005 年开始):

        这是the query string 的 BNF:

        query         = *( pchar / "/" / "?" )
        pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
        

        规范说:

        • 字符斜线(“/”)和问号(“?”)可以表示查询组件中的数据
        • 由于查询组件通常用于以“key=value”对的形式携带标识信息,并且一个经常使用的值是对另一个 URI 的引用,因此 有时最好避免百分比-编码这些字符

        (但我想您的服务器框架可能会也可能不会完全遵循规范。)

        【讨论】:

          【解决方案5】:

          http://en.wikipedia.org/wiki/Query_string报道的那样

          W3C 建议所有 Web 服务器都支持分号分隔符 除了与号分隔符(link reported on that wiki page) 以允许 HTML 中 URL 中的 application/x-www-form-urlencoded 查询字符串 文档,而无需实体转义 & 符号。

          所以,我想这个问题的答案是肯定的,你必须换成“;”分号“&”符号通常用于 key=value 分隔符。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-05
            • 1970-01-01
            • 2011-03-30
            • 1970-01-01
            • 2016-09-25
            • 2011-09-28
            相关资源
            最近更新 更多