Is it also valid, according to the HTTP/1.1 standard, to send a URI [in a location header] without hostname and protocol?
Não, por causa de como 'absoluteURI' é definido. Já que você está olhando para uma RFC, vamos nos ater a essa discussão. Backup:
Now what exactly do they mean by 'absolute URI'?
Está definido em outro lugar. Isso acontece frequentemente .
Now I want to redirect to a URI on the same server, and I know the path. It is an absolute URI (it starts at the root), but without hostname and protocol.
Pode ser um caminho absoluto , mas isso não o torna um absoluto URI .
Da seção 3.2.1 da RFC HTTP / 1.1, Sintaxe Geral:
For definitive information on URL syntax and semantics, see "Uniform Resource Identifiers (URI): Generic Syntax and Semantics," RFC 2396 [42] (which replaces RFCs 1738 [4] and RFC 1808 [11]). This specification adopts the definitions of "URI-reference", "absoluteURI", "relativeURI", "port", "host","abs_path", "rel_path", and "authority" from that specification.
Olhando para RFC 2396 :
absoluteURI = scheme ":" ( hier_part | opaque_part )
Mesmo sem mergulhar através do BNF, a parte 'esquema' (o 'http' ou 'https') é necessária. Vou omitir uma discussão real sobre a criação de regras aqui, mas como você precisa de um 'http:' ou 'https:' no início da string, não é possível remover a parte da rede do URI.
I tried this, and every browser I tested seemed to understand it.
A lei de Postel no trabalho. Você fez algo errado, mas o navegador entendeu mesmo assim. Você deve segui-lo e enviar um URI absoluto correto com o cabeçalho Location:
. Se não puder ser construído facilmente em seu ambiente, há algo errado; Não consigo pensar em nenhum aplicativo da web que vi onde as informações do host não são configuráveis ou recuperáveis.