查询字符串:查询字符串是否包含也包含查询字符串的URL?

时间:2010-11-22 18:41:37

标签: asp.net html iis

示例:

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

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

5 个答案:

答案 0 :(得分:3)

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

将值传递给查询字符串时,需要url encode名称/值对。如果要传入包含特殊字符(如问号(?))的值,则只需将该字符编码为%3F即可。如果您需要以递归方式将另一个查询字符串传递给已编码的网址,则需要对原始网址进行双/三/等编码才能生成原始文件?变成%253F,%25253F等

答案 1 :(得分:2)

您可能希望UrlEncode查询字符串中的网址。

答案 2 :(得分:0)

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

这是the query string的BNF:

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

规范说:

  • 字符斜杠(“/”)和问号(“?”)可能表示查询组件中的数据
  • 由于查询组件通常用于携带“key = value”对形式的标识信息,而一个常用值是对另一个URI的引用,有时可以更好地避免百分比-encoding 那些字符

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

答案 3 :(得分:0)

http://en.wikipedia.org/wiki/Query_string

中所述
  

W3C建议所有Web服务器都支持分号分隔符   除了&符分隔符(link reported on that wiki page)允许   HTML中的URL中的application / x-www-form-urlencoded查询字符串   没有实体逃避&符号的文件。

所以,我想这个问题的答案是肯定的,你必须改变一个&#34 ;;"分号"&" &符号用于键=值分隔符。

答案 4 :(得分:-1)

不,但您可以对网址进行编码并稍后解码。