# 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)


kwargs = {
            'method': method,
            'path': path,
            'data': data_bytes,
            'headers': headers,
            'response': response
        }
        if 'request_handler' in inspect.getargspec(update_listener.return_response)[0]:
            
            
            kwargs['request_handler'] = request_handler
        updated_response = update_listener.return_response(**kwargs)
        if isinstance(updated_response, Response):
            response = updated_response
    
    from localstack.services.s3.s3_listener import ProxyListenerS3
    is_s3_listener = any([isinstance(service_listener, ProxyListenerS3) for service_listener in listeners])
    if not is_s3_listener:
        append_cors_headers(response)
    return response
def build_x_forwarded_for(headers, client_address, server_address):
    x_forwarded_for = headers.get('X-Forwarded-For')
    if x_forwarded_for:
        x_forwarded_for_list = (x_forwarded_for, client_address, server_address)
    else:
        x_forwarded_for_list = (client_address, server_address)
    return ', '.join(x_forwarded_for_list)
class DuplexSocket(ssl.SSLSocket):
    """ Simple duplex socket wrapper that allows serving HTTP/HTTPS over the same port. """
    def accept(self):