1

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

在传递到我们代码中的 URL 中出现了一些问题。我们从 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 会抛出这个额外的字符(特别是对于某些转义序列而不是其他转义序列)仍然是有益的。

4

1 回答 1

1

哇……好难啊。通常人们设计网站时使用字母数字加上波浪号 (~) 和破折号 (=)。我什至不确定 RFC 是否允许将文案符号作为主机标头的一部分。我不肯定它应该在 URL 的方案部分中被允许。这篇文章可能会为您提供一些启示。至于 IIS - 您也许可以添加一个特定的重写规则来解决这个问题。就我个人而言,我会在 URL 的架构部分中避免使用这些字符。

于 2012-08-04T17:15:54.000 回答