# This is a ...

[x] bug report
[ ] feature request

# Detailed description

When running an `serverless-express` API in a lambda pushed to localstack in Docker, OPTIONS requests from a client with the `withCredentials` flag fail because of the wildcard `'*'` in `Access-Control-Allow-Origin` header returned by calling the endpoint (e.g.: `http://localhost:4566/restapis/<id>/<stage>/_user_request_/api/`). The request doesn't reach the lambda at all.

docker-compose.yml:
```yml

services:
  localstack:
    container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
    image: localstack/localstack:latest
    network_mode: bridge
    ports:
      - "4566:4566"
      - "4571:4571"
    environment:
      - DEFAULT_REGION=us-east-1
      - SERVICES=iam,lambda,apigateway,s3,ses,sts,sns,cloudformation,cloudwatch
      - DEBUG=1
      - DATA_DIR=/tmp/localstack/data
      - LAMBDA_EXECUTOR=docker-reuse
      - LAMBDA_REMOTE_DOCKER=0
      - KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
      - DOCKER_HOST=unix:///var/run/docker.sock
      - HOST_TMP_FOLDER=${PWD}/.localstack
      - LAMBDA_DOCKER_NETWORK=bridge
    volumes:
      - "${PWD}/.localstack:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"

```

## Expected behavior

Allow defining a single(?) allowed origin for the header so that the preflight request doesn't fail.

## Actual behavior

Browser errors out with: 

```
Access to XMLHttpRequest at '<endpoint>' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
```

# Steps to reproduce

- Create a simple API based on `serverless-express` with `express-session` as session handler.
- Use `withCredentials` flag to send requests to the API via `axios` or similar

## Command used to start LocalStack

`docker-compose up`

## Client code (AWS SDK code snippet, or sequence of "awslocal" commands)


regions = cls.regions()
        region = region or cls.get_current_request_region()
        regions[region] = regions.get(region) or cls()
        return regions[region]
    @classmethod
    def regions(cls):
        if not hasattr(cls, 'REGIONS'):
            
            cls.REGIONS = {}
        return cls.REGIONS
    @classmethod
    def get_current_request_region(cls):
        return aws_stack.get_region()
def append_cors_headers(response=None):
    
    headers = {} if response is None else response.headers
    if 'Access-Control-Allow-Origin' not in headers:
        headers['Access-Control-Allow-Origin'] = '*'
    if 'Access-Control-Allow-Methods' not in headers:
        headers['Access-Control-Allow-Methods'] = ','.join(CORS_ALLOWED_METHODS)
    if 'Access-Control-Allow-Headers' not in headers:
        requested_headers = headers.get('Access-Control-Request-Headers', '')
        requested_headers = re.split(r'[,\s]+', requested_headers) + CORS_ALLOWED_HEADERS
        headers['Access-Control-Allow-Headers'] = ','.join([h for h in requested_headers if h])
    if 'Access-Control-Expose-Headers' not in headers:
        headers['Access-Control-Expose-Headers'] = ','.join(CORS_EXPOSE_HEADERS)
    for header in ALLOWED_CORS_RESPONSE_HEADERS:
        if headers.get(header) == '':
            del headers[header]
def modify_and_forward(method=None, path=None, data_bytes=None, headers=None, forward_base_url=None,