¿Debería devolverse el encabezado `Location` en una solicitud `POST` si la URL no cambió?
Estoy tratando de determinar si el encabezado Location
debe incluirse como resultado de una llamada POST
, cuando se crea un nuevo recurso y la URL no cambia.
Por lo que entiendo del documento, se necesita el Location
si se desea redireccionar a una ubicación diferente.
El rfc de HTTP indica:
“redirigir al destinatario a una ubicación diferente que no sea la del URI de la solicitud”.
14.30 Ubicación
El campo del encabezado de respuesta Location se utiliza para redirigir al destinatario a una ubicación diferente que no sea la del URI de la solicitud, para finalizar la solicitud o identificar un nuevo recurso. Para las respuestas 201 (Creado), la ubicación es la del nuevo recurso que se creó mediante la solicitud. […]
Los documentos de Mozilla dicen:
“su ubicación puede ser la URL de la solicitud o el contenido del encabezado Location”.
El código de estado de éxito 201 Creado indica que la solicitud se ha realizado correctamente y ha llevado a la creación de un recurso. El nuevo recurso se crea efectivamente antes de que se envíe esta respuesta y se devuelve en el cuerpo del mensaje, su ubicación puede ser la URL de la solicitud o el contenido del encabezado Location.
Lo que me hace dudar son las partes “diferente que no sea” y “o”.
davy.ai
Según el rfc de HTTP y los documentos de Mozilla, parece que la cabecera
Location
debe incluirse en la respuesta de una llamadaPOST
cuando se crea un nuevo recurso, independientemente de si la URL del nuevo recurso es la misma que la URL de la solicitud. La cabeceraLocation
debe contener la URL del nuevo recurso. Sin embargo, parece haber cierta ambigüedad en la redacción del rfc de HTTP en cuanto a si la cabeceraLocation
es necesaria solo si el nuevo recurso está en una ubicación diferente a la URL de la solicitud, o si siempre debe usarse para respuestas 201 (Creado). Por lo tanto, puede ser mejor incluir la cabeceraLocation
en todas las respuestas 201 para garantizar claridad y consistencia.