什么字符集应该用于 Location: 301 响应中的标头?

IDi*_*ble 1 encoding location rfc httpwebrequest httpwebresponse

尝试cot.ag/o1LnfW从 .NET 使用 HttpWebRequest使用 URI ,我得到 301 Moved 响应,响应头 Location 有一个(不正确的)值:

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,我得到了(正确的)Location 标头值:

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,还是 bit.ly 在提供错误代码页中的标头时失败?

Edw*_*son 6

RFC 2616指定Location标头应包含RFC 1630定义的 URI ,它要求 URI 是 7 位干净的 ASCII 并带有任何特殊字符 URL 编码。

换句话说,服务器错误地传递了 URI,应该对其进行转义。