【问题标题】:Why is IIS 7.5 / Coldfusion 9 adding a weird character to URL string?为什么 IIS 7.5 / Coldfusion 9 在 URL 字符串中添加了一个奇怪的字符?
【发布时间】:2012-08-01 19:22:37
【问题描述】:

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

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

我们看到的是一些特殊字符在其中得到了一个额外的字符(一个 Â)字符。取这个网址(%A9 是版权符号):

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

CGI.QUERY_STRING 将此报告为:

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

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

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

编辑:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我们确实避免使用这些类型的字符;但这是客户移植到我们系统并需要实施的东西。至于它是计划的一部分:它所在的位置不会被视为路径(因为它位于主机和端口之后的第一个“/”之后)?
    • 我认为版权符号 (%A9) 是允许的。部分 RFC 声明路径可以使用 escaped 定义中的内容,即 escaped = "%" hex hex,这是我传入的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多