404 vs 403 cuando falta el índice del directorio

Esta es principalmente una pregunta filosófica sobre la mejor manera de interpretar la especificación HTTP. ¿Debería un directorio sin índice de directorio (por ejemplo, index.html) devolver 404 o 403? (403 es el valor predeterminado en Apache).

Por ejemplo, suponga que existen las siguientes URL y son accesibles:

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

Pero no hay nada en:

http://example.com/files/

(Supongamos que estamos usando 301s para forzar barras diagonales finales para todas las URL).

Creo que se deben tener en cuenta varias cosas:

Por defecto, Apache devuelve 403 en este escenario. Eso es significativo para mí. Pensaron en esto y tomaron la decisión de usar 403. Según el W3C, 403 significa "El servidor entendió la solicitud, pero se niega a cumplirla". Supongo que significa que debe devolver 403 si la URL es significativa pero no obstante está prohibida. 403 podría dar lugar a la divulgación de información si el cliente adivina correctamente que la URL se asigna a un directorio real en el disco.http://example.com/files/ no es un recurso, y el hecho de que se asigne internamente a un directorio no debería ser relevante para el código de estado. Si interpreta el esquema de URL como la definición de una estructura de directoriodesde la perspectiva del cliente, la implementación interna sigue siendo irrelevante, pero tal vez la apariencia externa debería influir en los códigos de estado. Tal vez, incluso si creó la misma estructura de URL sin usar directorios internamente, aún debería usar 403, porque se trata de la percepción del cliente de una estructura de directorio.

En general, ¿cuál crees que es el mejor enfoque? ¿Deberíamos simplemente decir "un recurso es un recurso, y si no existe, es un 404?" ¿O deberíamos decir, "si tiene barras, parece un directorio para el cliente y, por lo tanto, es un 403 si no hay índice?"

Si estás en el campamento 403, ¿crees que deberías hacer todo lo posible para devolver 403 incluso si la implementación interna no usa directorios? Supongamos, por ejemplo, que tiene una aplicación web dinámica con esta URL:http://example.com/users/joe, que se asigna a algún código que genera la página de perfil de Joe. Suponiendo que no escriba algo que enumere a todos los usuarios, deberíahttp://example.com/users/ retorno 403? (Muchos, si no todos, los marcos web devuelven 404 en este caso).

Respuestas a la pregunta(2)

Su respuesta a la pregunta