什么charset应该用于位置:301响应中的标题?

时间:2011-10-04 21:23:37

标签: encoding httpwebrequest location httpwebresponse rfc

尝试使用HttpWebRequest从.NET中使用URI cot.ag/o1LnfW,我得到301 Moved响应,响应头位置的(不正确)值为:

http://www.joycemeyer.org/BroadcastHome.aspx?video=Living_Beyond_Your_Feelings_â_Pt_1&utm_source=Twitter&utm_campaign=EEL&utm_medium=post&utm_term=September29&utm_content=post

来自Fiddler,我得到(正确的)位置标头值:

http://www.joycemeyer.org/BroadcastHome.aspx?video=Living_Beyond_Your_Feelings_–_Pt_1&utm_source=Twitter&utm_campaign=EEL&utm_medium=post&utm_term=September29&utm_content=post

注意到Fiddler URL中出现的差异。在Fiddler的情况下,字节是E2 80 93.在.Net的情况下,字节是E2 3F 3F。这导致不正确的标头解释,随后无法遵循重定向。

我认为这是一个.NET框架错误,但我不知道RFC应该说它应该发送什么。我应该将此报告为Microsoft的错误,还是在错误的代码页中提供标题时出现故障?

2 个答案:

答案 0 :(得分:4)

RFC 2616指定Location标头应包含由RFC 1630定义的URI,该URI要求URI为7位干净ASCII,并且对URL进行任何特殊字符编码。

换句话说,服务器正在错误地传递URI,应该将其转义。

答案 1 :(得分:1)

我在bit.ly的支持论坛上reported this a bug结束了。它们应该使用ASCII字符集中的合法RFC 1630 URI进行响应(没有设置高位的八位字节)。