在IIS中托管时,IDN字符断开的位置标头

时间:2015-05-22 13:28:18

标签: asp.net iis asp.net-web-api

对于我们API中的一些POST调用,我们将响应Location头指向创建的资源。

Location标头可以包含IDN字符的网址(例如http://résponse.com

在IIS中托管API时,IIS会将Location标头更改为http://résponse.com/

编码肯定存在问题。 当我们自己托管API时,不会触及Location标头。 IIS中是否存在一些导致此行为的设置? 内容类型charset设置为utf-8,但这已经是IIS中的默认值。

IIS的版本是8.5+ 我们使用Web API,但使用NancyFx会导致相同的行为。

3 个答案:

答案 0 :(得分:0)

我现在只是为了对特殊字符进行编码 但是我仍然不明白为什么IIS会更改标题并且自托管解决方案不会

答案 1 :(得分:0)

您可以尝试将标头添加到该网站的HTTP响应标头列表中。如果没有指定,它将在用户代理请求的任何内容中传递,这可能是您看到ISO-8859-1的原因

“属性”=> “HTTP标头”=> “文件类型......”=> “新型...”。放入要映射的扩展名,分别为每个扩展名; IIS用户可能想要映射.htm,.html,...然后,对于内容类型,添加“text / html; charset = utf-8”(不带引号;将所需的字符集替换为utf-8;

答案 2 :(得分:0)

在IIS中的.Net Globalization功能中设置编码和文化配置(我假设您正在托管基于asp.net的API?)