查询字符串:查询字符串是不是可以包含同时包含查询字符串的 URL?
Posted
技术标签:
【中文标题】查询字符串:查询字符串是不是可以包含同时包含查询字符串的 URL?【英文标题】: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 标签是因为我猜它还取决于您使用的服务器技术?
【问题讨论】:
【参考方案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 分隔符。
【讨论】:
以上是关于查询字符串:查询字符串是不是可以包含同时包含查询字符串的 URL?的主要内容,如果未能解决你的问题,请参考以下文章