Location头是否允许有垂直条?

时间:2012-02-24 02:53:28

标签: http redirect http-headers

我最近遇到了一个服务器,它正在发送一个如下所示的Location头(用于重定向):

Location: http://www.example.com/something.ext?auth=123|123

当我尝试在我的Java程序中使用它时,它会抱怨“查询中存在非法字符”并失败。

服务器做错了什么?这合法吗?

1 个答案:

答案 0 :(得分:2)

使用转义:

|已使用%7C转义,因此您的网址变为:

Location: http://www.example.com/something.ext?auth=123%7C123
根据{{​​3}}的

Location标头定义为:

Location       = "Location" ":" absoluteURI 

HTTP/1.1

  

有关URL语法和语义的确切信息,请参阅“统一资源标识符(URI):通用语法和语义”,RFC 2396

RFC 2396已被HTTP/1.1淘汰,这需要转义某些字符(请参阅RFC以获取最终信息)。提供正确的URL是来源的责任,所以是 - 在这种情况下,您有责任提供正确转义的URL。