the resource requested present origin habilitar enable control aws allow amazon-web-services cors aws-api-gateway

amazon-web-services - resource - preflight response



Error previo al control AWS API Gateway CORS (3)

Parece que su método de OPCIONES está usando una plantilla de mapeo. Es eso intencional?

Si es así, publique la plantilla.

De lo contrario, intente volver a ejecutar el asistente CORS desde la consola API Gateway para restablecer su configuración de CORS.

Además, recuerde volver a implementar sus últimos cambios antes de probar con el navegador.

Estoy usando Zappa para implementar mi aplicación, cors está habilitado y todo parece funcionar bien al presionar el botón "probar" en las opciones del recurso "OPCIONES" API Gateway.

Sin embargo, cuando intento hacer la comprobación previa al CORS, aparece un error 500 con cuerpo {"message": "Internal server error"} y registros de CloudWatch {"message": "Internal server error"} Execution failed due to configuration error: Unable to transform request

EDITAR :

Así es como se ve la configuración:

EDIT 2 He intentado habilitar CORS tanto por medio de zappa_settings.json ( "cors": true ) como haciendo clic manualmente en Habilitar cors en la consola de AWS

¿Alguien tiene algún consejo sobre cómo depurar esto aún más?


No sé mucho sobre zappa (utilizamos sin servidor en este momento para administrar lambdas y gateways API), pero noté que OPTIONS Method Response está ligado a un modelo para Content-Type application/json .

Nuestra configuración parece estar funcionando bien, sin ningún modelo asociado: las OPCIONES IIRC no deberían tener un cuerpo en la respuesta. Me pregunto si el Modelo definido está agregando un cuerpo, incluso si ha configurado un cuerpo vacío .


¿Alguien tiene algún consejo sobre cómo depurar esto aún más?

Tengo algunas cosas:

En su zappa_settings.json , no tiene esta opción binary_support: false , ¿verdad?

Porque:

Puedes dejar cors: true pero establecer binary_support: false - no parecen estar jugando muy bien juntos.

( Aquí tenemos el mismo problema y solucionado la eliminación de soporte binario)

Si no, puedes intentar esto:

  • En el método OPTIONS, elija como tipo de integración "simulacro"
  • Para cada Método de un recurso
  • Ir al método de respuesta
  • Agregue todo el método de respuesta que debe ser compatible (es decir, 200, 500, etc.)
  • Para cada código de respuesta, establezca Encabezados de respuesta para:

    X-Solicitado-Con

    Access-Control-Allow-Headers

    Access-Control-Allow-Origin

    Access-Control-Allow-Methods

  • Vaya a Respuesta de integración, seleccione uno de los códigos de respuesta creados, luego Asignaciones de encabezado

  • Insertar falues ​​por defecto para encabezados ejemplo:

    X-Solicitado-Con: ''*''

    Access-Control-Allow-Headers: ''Content-Type, X-Amz-Date, Authorization, X-Api-Key, x-requested-with''

    Access-Control-Allow-Origin: ''*''

    Access-Control-Allow-Methods: ''POST, GET, OPTIONS''

  • Esta operación debe repetirse para cada método, incluidas las OPCIONES recién creadas

  • Implementa la API en una etapa
  • Compruebe mediante http://client.cors-api.appspot.com/client que las solicitudes CORS se han habilitado correctamente

(extraído de aquí ).

Supongo que ya ha verificado esto: http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html ...

También encontré esto para ser considerado, citado desde aquí :

También se debe tener en cuenta que simplemente habilitar CORS en la capa de puerta de enlace API es necesario pero no suficiente para una aplicación que desea hacer solicitudes CORS contra una API Zappa que está autenticada por IAM (y probablemente autenticada usando otros autenticadores de nivel API-gateway). La aplicación en sí tendrá que responder con los encabezados CORS relacionados, pero no tiene la oportunidad de hacerlo si API Gateway bloquea la solicitud previa al vuelo.

Espero que te ayude!