对于我们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会导致相同的行为。
答案 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?)