查询字符串:查询字符串是不是可以包含同时包含查询字符串的 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?的主要内容,如果未能解决你的问题,请参考以下文章

SqlSever基础 where % 可能存在一个字符或者多个字符,查询内容中是否包含指定字

sql语句包含怎么写

SQL - 查询字符串是不是包含列中的部分值

sql语句包含与不包含的问题

Mongodb查询字符串数组看是不是包含关键字

mongodb:查询以检查数组中的项目是不是包含特定字符串[重复]