404 vs 403 quando o índice de diretório está ausente

Essa é principalmente uma pergunta filosófica sobre a melhor maneira de interpretar a especificação HTTP. Um diretório sem índice de diretório (por exemplo, index.html) deve retornar 404 ou 403? (403 é o padrão no Apache.)

Por exemplo, suponha que os seguintes URLs existam e estejam acessíveis:

http://example.com/files/file_1/
http://example.com/files/file_2/

Mas não há nada em:

http://example.com/files/

(Suponha que estamos usando 301s para forçar barras finais para todos os URLs.)

Eu acho que várias coisas devem ser levadas em consideração:

Por padrão, o Apache retorna 403 neste cenário. Isso é significativo para mim. Eles pensaram sobre essas coisas e tomaram a decisão de usar 403.De acordo com o W3C, 403 significa "O servidor entendeu a solicitação, mas está se recusando a atendê-la". Entendo que isso significa que você deve retornar 403 se o URL for significativo, mas mesmo assim proibido.403 pode resultar na divulgação de informações se o cliente adivinhar corretamente que a URL é mapeada para um diretório real no disco.http://example.com/files/ não é um recurso e o fato de ele ser mapeado internamente para um diretório não deve ser relevante para o código de status.Se você interpretar o esquema de URL como definindo uma estrutura de diretórioda perspectiva do cliente, a implementação interna ainda é irrelevante, mas talvez a aparência externa deva realmente ter alguma influência nos códigos de status. Talvez, mesmo se você criou a mesma estrutura de URL sem usar diretórios internamente, ainda deve usar 403s, porque é sobre a percepção do cliente sobre uma estrutura de diretórios.

Em suma, qual você acha que é a melhor abordagem? Devemos apenas dizer "um recurso é um recurso e, se não existe, é um 404?" Ou deveríamos dizer: "se houver barras, parece um diretório para o cliente e, portanto, será 403 se não houver índice?"

Se você estiver no campo 403, você acha que deve fazer o possível para retornar 403s, mesmo que a implementação interna não use diretórios? Suponha, por exemplo, que você tenha um aplicativo Web dinâmico com este URL:http://example.com/users/joe, que mapeia para algum código que gera a página de perfil para Joe. Supondo que você não escreva algo que liste todos os usuários, devehttp://example.com/users/ retornar 403? (Muitas, senão todas as estruturas da web retornam 404 neste caso.)

questionAnswers(2)

yourAnswerToTheQuestion