### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

First, I upload a file that includes spaces in its filename.

Then, when I try to copy that file, I get a 404 error, and the file is not copied.

```
2024/01/04 21:31:18 error s3client copy object: operation error S3: CopyObject, https response error StatusCode: 404, RequestID: 81bbb363-4bf9-49ac-ac4e-fe4918a9a09c, HostID: s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=, api error NoSuchKey: The specified key does not exist.
Exiting.
```

### Expected Behavior

The file should be copied successfully.

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)

```docker-compose.yml
version: '3.9'
services:
  localstack:
    build:
      context: localstack
      dockerfile: Dockerfile
    environment:
      - AWS_DEFAULT_REGION=ap-northeast-1
      - AWS_DEFAULT_OUTPUT=json
      - AWS_ACCESS_KEY_ID=dummy
      - AWS_SECRET_ACCESS_KEY=dummy
      - LOCALSTACK_SERVICES=s3,ses
      - LS_LOG=debug
      - DEBUG=1
    ports:
      - "4566:4566"
```

```Dockerfile
FROM localstack/localstack:latest

COPY ready.d /etc/localstack/init/ready.d
```

Here is the complete code:

git clone https://github.com/yuki2006/localstack_check
go run main.go

### Environment

```markdown
- OS: docker image localstack/localstack
- LocalStack:latest
```


### Anything else?

This is the implementation following the example provided here:
https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/go/example_code/s3/s3_copy_object.go#L65C36-L65C47

(https://github.com/yuki2006/localstack_check/blob/master/main.go#L79)

Additionally, this issue does not occur with the actual S3; no errors were encountered.
"""
        When sending a Pu request to S3 with a very raw request not having any indication that the request is
        directed to S3 (no signing, no specific S3 endpoint) and encoded as a form, the request will go through the
        ServiceNameParser handler.
        This parser will try to parse the form data (which in our case is binary data), and will fail with a decoding
        error. It also consumes the stream, and leaves S3 with no data to save.
        This test verifies that this scenario works by skipping the service name thanks to the early S3 CORS handler.
        """
        default_endpoint = f"http://{get_localstack_host().host_and_port()}"
        _key = "test-routing-key"
        key_url = f"{default_endpoint}/{s3_bucket}/{_key}"
        data = os.urandom(445529)
        resp = .put(
            key_url, data=data, headers={"Content-Type": "application/x-www-form-urlencoded"}
        )
        assert resp.ok
        get_ = aws_client.s3.get_(Bucket=s3_bucket, Key=_key)
        assert get_["Body"].read() == data
        fake_key_url = f"{default_endpoint}/fake-bucket-{short_uid()}/{_key}"
        resp = .put(
            fake_key_url, data=data, headers={"Content-Type": "application/x-www-form-urlencoded"}
        )
        assert b"NoSuchBucket" in resp.content
class TestS3MultiAccounts:
    @pytest.fixture
    def primary_client(self, aws_client):