代码之家  ›  专栏  ›  技术社区  ›  Pickels

查询字符串:查询字符串是否可以包含还包含查询字符串的URL?

  •  5
  • Pickels  · 技术社区  · 15 年前

    例子:

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

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

    5 回复  |  直到 12 年前
        1
  •  2
  •   John Boker    15 年前

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

        2
  •  3
  •   zzzzBov    15 年前

    服务器技术不应该有什么不同。

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

        3
  •  0
  •   KajMagnus    15 年前

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

    这是BNF the query string :

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

    说明书上说:

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

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

        4
  •  0
  •   Marco    11 年前

    如报告所述 http://en.wikipedia.org/wiki/Query_string

    W3C建议所有web服务器在 添加与号分隔符 (link reported on that wiki page) 允许 HTML中URL中的application/x-www-form-urlencoded查询字符串 无需实体转义与号的文档。

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

        5
  •  -1
  •   Lucas Moeskops    15 年前

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

    推荐文章