CORS is really driving me crazy and I\'m really out of ideas as of what to try to make it work.
I have created a simple APIG Api with 1 resource cal
I had a similar issue, but with lambda proxy integration:
CORS activated on AWS API Gateway using the browser
lambda-proxy integration activated
When using the lambda proxy integration, you can return custom headers from inside the code of the lambda:
var result = {
statusCode: data.statusCode | 200,
headers: {
"Access-Control-Allow-Origin": "*"
},
body: JSON.stringify(responseBody)
};
callback(null, result);
This way you get the CORS header sent. I think there might be a better way to get it to work with the lambda proxy integration without coupling the CORS inside the code of the lambda, please let me know if you know.
I was also stuck in this error, and after digging, I found that in non 2XX
responses, the API was not giving Access-Control-Allow-Origin
header in the response. Hence, while the OPTION
method and successful (2XX
) responses had this header, the 4XX
and 5XX
did not. One can also confirm this using PostMan and inspecting the headers of the bad response.
After tweaking with configuration I made sure to return that header in all responses.
Sometimes CORS error occurs if the lambda time out is small.