Are you struggling with a frontend application that wants to use a backend AWS Lambda API ? Do you have the next CORS problem:

Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response

The solution is simple:

  • implement HTTP OPTIONS method
  • respond with the next access control headers : Access-Control-Allow-Origin, Access-Control-Allow-Headers, Access-Control-Allow-Methods

For example in python you can do something like this:

def return_200():
    return {
        'statusCode': 200,
        'headers': {
            'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Methods': 'GET,HEAD,OPTIONS,POST,PUT',
                'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization',
            'Content-Type': 'application/json'
        },
        'body': json.dumps({'message': 'ok'})
    }