有谁知道强制 IIS 不进行 URL 编码的方法
您必须进行 URL 编码。在 HTTP 标头中传递原始 'š' (\xC5\xA1) 是无效的。浏览器可能会为您修复高达 '%C5%A1' 的错误,但如果是这样,结果与您刚开始编写 '%C5%A1' 时的结果没有任何不同。
在链接中包含原始“š”并没有错,浏览器应该按照 IRI 规范将其编码为 UTF-8 和 URL 编码。但要确保这确实有效,您应该确保带有链接的页面以 UTF-8 编码提供。同样,手动 URL 编码可能是最安全的。
我对 UTF-8 URL 没有任何问题,你能链接到一个不起作用的例子吗?
您是否有指向参考的链接,其中详细说明了包含有效 HTTP 标头的内容?
规范地,RFC 2616。然而,在实践中它有些无益。关键段落是:
仅当根据 RFC 2047 的规则进行编码时,*TEXT 的字可能包含来自 ISO-8859-1 以外的字符集的字符。
问题是根据 RFC 2047 的规则,只有“原子”可以容纳 2047 的“编码字”。TEXT,在大多数情况下,它包含在 HTTP 中,不能被设计成一个原子。无论如何,RFC 2047 是为 RFC 822 系列格式明确设计的,尽管 HTTP 看起来很像 822 格式,但实际上并不兼容;它有自己的基本语法,但有细微但显着的差异。HTTP 规范中对 RFC 2047 的引用没有提供任何线索来说明人们如何能够以任何一致的方式解释它,并且据我所知的任何人都可以解决,这是一个错误。
在任何情况下,实际浏览器都不会尝试在其 HTTP 处理的任何地方找到解释 RFC 2047 编码的方法。虽然 RFC 2616 将非 ASCII 字节定义为 ISO-8859-1,但实际上浏览器在处理 HTTP 时可以在不同的地方使用许多其他编码(例如 UTF-8,或任何系统默认编码)标题。因此,即使依赖 8859-1 字符集也不安全!无论如何,这不会给你'š'......