amazon web services - Angular y API Gateway: ¿cómo implementar el método PUT?
Estoy desarrollando una aplicación web con Angular 4 utilizando el lenguaje TypeScript (lado frontend) y AWS con API Gateway (lado backend). Tengo un problema: el API Gateway está configurado con una solicitud PUT para actualizar datos que funciona perfectamente. si utilizo este código en mi aplicación (correctUrl es una cadena que se refiere a la URL correcta)
putObject(myObject: MyObject) {
if (this.authService.getAuthToken()) {
let cognitoToken = this.authService.getAuthToken();
let headers = new Headers({'Content-Type': 'application/json'});
headers.append('Authorization', cognitoToken); //JWT token
let url = correctUrl;
return this.http.put(url, JSON.stringify(myObject) ,
{headers})
.map(data => data.json())
.catch(this.handleError);
} else {
let errMsg = 'Error retrieving Authrization token from Cognito
user session';
console.error('error message: ' + errMsg);
return Observable.throw(errMsg);
}
}
Si invoco este método (que parece estar correctamente escrito), la solicitud PUT no se ejecuta (aunque el objeto JSON coincide perfectamente) y aparece en las consolas: Method PUT is not allowed by Access-Control-Allow-Methods in preflight response. Esto es muy extraño, porque si voy a "Habilitar CORS", hay casillas en los tres Métodos: PUT, GET, OPTIONS (solo porque PUT tiene la marca de verificación, no entiendo cuál es el error. Estoy invocando una solicitud GET de la misma manera y todo funciona perfectamente, no entiendo por qué no sucede lo mismo con PUT!