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

为什么IIS 7.5/Coldfusion 9会在URL字符串中添加一个奇怪的字符?,url,iis,coldfusion,iis-7.5,coldfusion-9,Url,Iis,Coldfusion,Iis 7.5,Coldfusion 9,我们在产品中构建了一个“重定向”引擎,这样我们的客户就可以添加/编辑/删除自定义重定向,而无需在服务器上维护大量重写规则 在传递到代码中的URL中出现了一些问题。我们从Coldfusion填充的CGI.QUERY_STRING属性中提取这些内容(它拾取IIS/Coldfusion抛出的404,它将坏URL作为查询字符串附加,如?404;http://www.mysite.com:80/nonexistent-文件.cfm) 我们看到的是,一些特殊的角色在那里得到了一个额外的角色(一个)角色。获取

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

在传递到代码中的URL中出现了一些问题。我们从Coldfusion填充的
CGI.QUERY_STRING
属性中提取这些内容(它拾取IIS/Coldfusion抛出的404,它将坏URL作为查询字符串附加,如
?404;http://www.mysite.com:80/nonexistent-文件.cfm

我们看到的是,一些特殊的角色在那里得到了一个额外的角色(一个)角色。获取此URL(%A9是版权符号):

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

CGI.QUERY\u字符串
报告如下:

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

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

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

编辑:


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

哇。。。这很难。通常人们设计网站时使用字母数字加上波浪号(~)和破折号(=)。我甚至不确定RFC是否允许将copywrite符号作为主机头的一部分。我不确定它是否应该被允许出现在URL的scheme部分。这可能会给你一些启示。至于IIS,您可以添加一个特定的重写规则来解决这个问题。就我个人而言,我会避免在URL的模式部分使用这些字符。

哇。。。这很难。通常人们设计网站时使用字母数字加上波浪号(~)和破折号(=)。我甚至不确定RFC是否允许将copywrite符号作为主机头的一部分。我不确定它是否应该被允许出现在URL的scheme部分。这可能会给你一些启示。至于IIS,您可以添加一个特定的重写规则来解决这个问题。就我个人而言,我会避免在URL的模式部分使用这些字符。

我们确实避免使用这些类型的字符;但这是客户机移植到我们的系统并需要实现的东西。至于它是方案的一部分:它在哪里不被认为是路径(因为它在主机和端口之后的第一个“/”之后)?我认为版权符号(%A9)是允许的。RFC的一部分指出,路径可以使用
转义
定义中的内容,即
转义=“%”十六进制
,这就是我要传递的内容;但这是客户机移植到我们的系统并需要实现的东西。至于它是方案的一部分:它在哪里不被认为是路径(因为它在主机和端口之后的第一个“/”之后)?我认为版权符号(%A9)是允许的。RFC的一部分指出,路径可以使用
转义的
定义中的内容,即
转义的=“%”十六进制
,这就是我要传递的内容。