为什么IIS 7.5 / Coldfusion 9为URL字符串添加了一个奇怪的字符?

时间:2012-08-03 17:56:46

标签: url iis coldfusion iis-7.5 coldfusion-9

我们已在产品中构建了“重定向”引擎,因此我们的客户可以添加/编辑/删除自定义重定向,而无需在服务器上维护一堆重写规则。

传递给我们代码的网址中出现了一些问题。我们从Coldfusion填充的CGI.QUERY_STRING属性中提取这些内容(它取决于IIS / Coldfusion抛出的404,它将错误的URL附加为?404;http://www.mysite.com:80/nonexistent-file.cfm之类的查询字符串。)

我们看到的是,某些特殊字符会在其中添加一个额外的字符(一个)字符。拿这个URL(%A9是版权符号):

http://www.mysite.com/%A9/

CGI.QUERY_STRING将此报告为:

http://www.mysite.com:80/©/

我不知道这个额外的“”来自哪里。我有一种预感,这是由IIS引入的,但也可能是Coldfusion,因为它必须填充CGI变量。

关于为什么会发生这种情况以及如何解决问题的任何想法?似乎并非所有百分比编码/特殊字符都这样做......

编辑:

我可能已经放弃了我的确切问题,但是,知道为什么IIS或Coldfusion会抛出这个额外的字符(特别是对于某些转义序列而不是其他转义序列)仍然是有益的。

1 个答案:

答案 0 :(得分:1)

哇...这是一个艰难的。通常人们设计网站使用字母数字加上波浪号(〜)和破折号(=)。我甚至不确定RFC是否允许将copywrite符号作为主机头的一部分。我不肯定它应该被允许在URL的方案部分。这article可能会为您提供一些启示。对于IIS - 您可能能够添加一个特定的重写规则来处理问题。我个人会在URL的架构部分中避免使用这些字符。