1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
---
title: Content-Location
slug: Web/HTTP/Headers/Content-Location
translation_of: Web/HTTP/Headers/Content-Location
---
<div>{{HTTPSidebar}}</div>
<p>La cabecera <strong><code>Content-Location</code></strong> indica una ubicación alternativa para los datos devueltos. Su principal uso es indicar la URL de un recurso transmitido y que ha resultado de una <a href="/en-US/docs/Web/HTTP/Content_negotiation">negociación de contenido</a>.</p>
<p>Las cabeceras {{HTTPHeader("Location")}} y <code>Content-Location</code> son diferentes. <code>Location</code> indica la URL de una redirección, mientras que <code>Content-Location</code> indica la URL directa a ser utilizada para acceder al recurso, sin necesidad de realizar <a href="/en-US/docs/Web/HTTP/Content_negotiation">negociación de contenido</a> en el futuro. Mientras que <code>Location</code> es una cabecera asociada con la respuesta, <code>Content-Location</code> está asociada con los datos devueltos. Esta distinción puede parecer abstracta sin ver algunos <a href="#Examples">ejemplos</a>.</p>
<table class="properties">
<tbody>
<tr>
<th scope="row">Header type</th>
<td>{{Glossary("Entity header")}}</td>
</tr>
<tr>
<th scope="row">{{Glossary("Forbidden header name")}}</th>
<td>no</td>
</tr>
</tbody>
</table>
<h2 id="Sintaxis">Sintaxis</h2>
<pre class="syntaxbox">Content-Location: <url>
</pre>
<h2 id="Directivas">Directivas</h2>
<dl>
<dt><url></dt>
<dd>Una URL <a href="/en-US/docs/Learn/Common_questions/What_is_a_URL#Examples_of_relative_URLs">relativa</a> o <a href="/en-US/docs/Learn/Common_questions/What_is_a_URL#Examples_of_absolute_URLs">absoluta</a> (a la URL de la petición).</dd>
</dl>
<h2 id="Ejemplos">Ejemplos</h2>
<h3 id="Solicitando_datos_de_un_servidor_en_distintos_formatos">Solicitando datos de un servidor en distintos formatos</h3>
<p>Suponga que la API de un sitio web puede devolver datos en los formatos {{glossary("JSON")}}, {{glossary("XML")}}, o <a href="https://en.wikipedia.org/wiki/Comma-separated_values" rel="external" title="Comma-separated values">CSV</a>. Si la URL de un documento particular se encuentra en <code>https://example.com/documents/foo</code>, el sitio web podría retornar distintas URLs en la cabecera <code>Content-Location</code> dependiendo de la cabecera {{HTTPHeader("Accept")}} enviada en la petición: </p>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Request header</th>
<th scope="col">Response header</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Accept: application/json, text/json</code></td>
<td><code>Content-Location: /documents/foo.json</code></td>
</tr>
<tr>
<td><code>Accept: application/xml, text/xml</code></td>
<td><code>Content-Location: /documents/foo.xml</code></td>
</tr>
<tr>
<td><code>Accept: text/plain, text/*</code></td>
<td><code>Content-Location: /documents/foo.txt</code></td>
</tr>
</tbody>
</table>
<p>Estas URLs son ejemplos — el sitio web podría servir los distintos tipos de ficheros con cualquier patrón de URL que desee, por ejemplo, por medio de un <a href="/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search">parámetro en la query</a>: <code>/documents/foo?format=json</code>, <code>/documents/foo?format=xml</code>, y así sucesivamente.</p>
<p>De esa forma el cliente podrÍa recordar que la versión en formato JSON está disponible en esa URL particular, saltándose el paso de la negociación de contenido la próxima vez que solicite ese documento.</p>
<p>El servidor podría también considerar otras cabeceras de <a href="/en-US/docs/Web/HTTP/Content_negotiation">negociación de contenido</a>, tales como {{HTTPHeader("Accept-Language")}}.</p>
<h3 id="Apuntando_a_un_nuevo_documento_HTTP_201_Created">Apuntando a un nuevo documento (HTTP 201 Created)</h3>
<p>Suponga que está creando una nueva entrada de un blog, a través de la API del sitio web:</p>
<pre>PUT /new/post
Host: example.com
Content-Type: text/markdown
# Mi primera entrada de blog!
Hice esto a través de la API de `example.com`'. Espero que funcione.
</pre>
<p>El sitio devuelve un mensaje genérico de éxito confirmando que el post ha sido publicado. El servidor especifica donde se encuentra la nueva entrada utilizando <code>Content-Location</code>:</p>
<pre>HTTP/1.1 201 Created
Content-Type: text/plain; charset=utf-8
Content-Location: /my-first-blog-post
✅ Success!
</pre>
<h3 id="Indicating_the_URL_of_a_transactions_result">Indicating the URL of a transaction's result</h3>
<p>Digamos que tiene un formulario <code><a href="/en-US/docs/Web/HTML/Element/form"><form></a></code> para el envío de dinero a otro usuario de un sitio web.</p>
<pre class="brush: html"><form action="/enviar-pago" method="post">
<p>
<label>A quien desea enviar dinero?
<input type="text" name="destinatario">
</label>
</p>
<p>
<label>Cuanto dinero?
<input type="number" name="cantidad">
</label>
</p>
<button type="submit">Enviar dinero</button>
</form>
</pre>
<p>Cuando el formulario es enviado, el sitio web genera un recibo o comprobante de la transacción. El servidor podría utilizar la cabecera <code>Content-Location</code> para indicar la URL de ese comprobante para un acceso futuro.</p>
<pre>HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Location: /mis-recibos/38
<!doctype html>
<em>(Lots of HTML…)</em>
<p>Ha enviado $38.00 a UsuarioFicticio.</p>
<em>(Lots more HTML…)</em>
</pre>
<h2 id="Especificaciones">Especificaciones</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Especificación</th>
<th scope="col">Título</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{RFC("7231", "Content-Location", "3.1.4.2")}}</td>
<td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
</tr>
</tbody>
</table>
<h2 id="Compatibilidad_en_navegadores">Compatibilidad en navegadores</h2>
<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
<p>{{Compat("http.headers.Content-Location")}}</p>
<h2 id="Ver_también">Ver también</h2>
<ul>
<li>{{HTTPHeader("Location")}}</li>
</ul>
|