

# Solicitar redireccionamiento y la API REST
<a name="RESTRedirect"></a>

**Topics**
+ [Redireccionamientos y agentes de usuario HTTP](#RESTRedirectHTTPUserAgents)
+ [Redireccionamientos y 100-continue](#RESTRedirect100Continue)
+ [Ejemplo de redireccionamiento](#RESTRedirectExample)

En esta sección se describe cómo administrar el redireccionamiento HTTP mediante la API REST de Amazon S3. Para obtener información general sobre los redireccionamientos de Amazon S3, consulte [Realizar solicitudes](MakingRequests.md) en la Referencia de la API de Amazon Simple Storage Service. 

## Redireccionamientos y agentes de usuario HTTP
<a name="RESTRedirectHTTPUserAgents"></a>

Los programas que usan la API REST de Amazon S3 deberían poder ocuparse de los redireccionamientos o bien en la capa de aplicación o bien en la capa HTTP. Muchas bibliotecas clientes y agentes de usuario HTTP pueden configurarse para administrar los redireccionamientos de forma correcta y automática. Sin embargo, hay muchas otras que tienen implementaciones de los redireccionamientos incorrectas o incompletas. 

 Antes de depender de una biblioteca para cumplir el requisito de redireccionamiento, pruebe lo siguiente: 
+ Compruebe que todos los encabezados de solicitudes HTTP estén incluidos correctamente en la solicitud redirigida (la segunda solicitud tras haber recibido un redireccionamiento) incluidos los estándares HTTP como la autorización y la fecha.
+ Compruebe que los redireccionamientos que no sean GET, como PUT o DELETE, funcionen correctamente.
+ Compruebe que las solicitudes PUT grandes sigan los redireccionamientos correctamente.
+ Compruebe que las solicitudes PUT sigan los redireccionamientos correctamente si la respuesta 100-continue tarda demasiado en llegar.

 Los agentes de usuario HTTP que se ajusten estrictamente a RFC 2616 podrían necesitar una confirmación explícita antes de seguir un redireccionamiento si el método de solicitud HTTP no es GET o HEAD. Normalmente, es seguro seguir los redireccionamientos generados por Amazon S3 automáticamente, ya que el sistema generará redireccionamientos solamente a los hosts del dominio amazonaws.com, y el efecto de la solicitud redirigida será el mismo que el de la solicitud original. 

## Redireccionamientos y 100-continue
<a name="RESTRedirect100Continue"></a>

Para administrar el redireccionamiento de forma más sencilla, mejorar la eficacia y evitar los costos asociados con el envío duplicado del cuerpo de una solicitud redirigida, configure su aplicación para usar 100-continues en operaciones PUT. Cuando su aplicación usa 100-continue, no envía el cuerpo de la solicitud hasta que recibe una confirmación. Si el mensaje se rechaza en función de los encabezados, el cuerpo del mismo no se llega a enviar. Para obtener más información sobre 100-continue, visite [RFC 2616 Sección 8.2.3](http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3) 

**nota**  
Según RFC 2616, al usar `Expect: Continue` sin un servidor HTTP conocido, no debería esperar un periodo indefinido para enviar el cuerpo de la solicitud. Esto se debe a que algunos servidores HTTP no reconocen 100-continue. Sin embargo, Amazon S3 sí que reconoce si su solicitud contiene un `Expect: Continue` y responderá con un estado 100-continue provisional o un código de estado final. Además, no se producirá ningún error de redireccionamiento tras recibir la autorización provisional del 100-continue. Así, le resultará más fácil evitar recibir una respuesta de redireccionamiento mientras sigue escribiendo el cuerpo de la solicitud. 

## Ejemplo de redireccionamiento
<a name="RESTRedirectExample"></a>

En esta sección se ofrece un ejemplo de interacción cliente-servidor mediante redireccionamientos HTTP y 100-continue. 

A continuación mostramos un ejemplo de PUT al bucket `quotes.s3.amazonaws.com`.

```
1. PUT /nelson.txt HTTP/1.1
2. Host: quotes.s3.amazonaws.com
3. Date: Mon, 15 Oct 2007 22:18:46 +0000
4. 
5. Content-Length: 6
6. Expect: 100-continue
```

Amazon S3 devuelve lo siguiente:

```
 1. HTTP/1.1 307 Temporary Redirect
 2. Location: http://quotes.s3-4c25d83b.amazonaws.com/nelson.txt?rk=8d47490b
 3. Content-Type: application/xml
 4. Transfer-Encoding: chunked
 5. Date: Mon, 15 Oct 2007 22:18:46 GMT
 6. 
 7. Server: AmazonS3
 8. 
 9. <?xml version="1.0" encoding="UTF-8"?>
10. <Error>
11.   <Code>TemporaryRedirect</Code>
12.   <Message>Please re-send this request to the
13.   specified temporary endpoint. Continue to use the
14.   original request endpoint for future requests.
15.   </Message>
16.   <Endpoint>quotes.s3-4c25d83b.amazonaws.com</Endpoint>
17.   <Bucket>quotes</Bucket>
18. </Error>
```

El cliente sigue la respuesta de redireccionamiento y envía una nueva solicitud al punto de conexión temporal `quotes.s3-4c25d83b.amazonaws.com`.

```
1. PUT /nelson.txt?rk=8d47490b HTTP/1.1
2. Host: quotes.s3-4c25d83b.amazonaws.com
3. Date: Mon, 15 Oct 2007 22:18:46 +0000
4. 
5. Content-Length: 6
6. Expect: 100-continue
```

Amazon S3 devuelve un 100-continue que indica que el cliente debería continuar con el envío del cuerpo de la solicitud.

```
1. HTTP/1.1 100 Continue
```

El cliente envía el cuerpo de la solicitud.

```
1. ha ha\n
```

Amazon S3 devuelve la respuesta final.

```
1. HTTP/1.1 200 OK
2. Date: Mon, 15 Oct 2007 22:18:48 GMT
3. 
4. ETag: "a2c8d6b872054293afd41061e93bc289"
5. Content-Length: 0
6. Server: AmazonS3
```