

# Testar o CORS
<a name="testing-cors"></a>

Para testar a configuração de CORS, uma solicitação de CORS preliminar pode ser enviada com o método `OPTIONS` para que o servidor responda se é aceitável enviar a solicitação. Quando o Amazon S3 recebe uma solicitação preliminar, ele avalia a configuração de CORS para o bucket e usa a primeira regra `CORSRule` correspondente à solicitação de entrada para permitir uma solicitação entre origens. Para que uma regra seja correspondente, as seguintes condições devem ser satisfeitas: 
+ O cabeçalho `Origin` em uma solicitação do CORS para seu bucket deve corresponder às origens do elemento `AllowedOrigins` na configuração do CORS.
+ Os métodos HTTP especificados no `Access-Control-Request-Method` em uma solicitação de CORS para o bucket devem corresponder ao método ou aos métodos listados no elemento `AllowedMethods` na configuração de CORS.
+ Os cabeçalhos listados no cabeçalho `Access-Control-Request-Headers` em uma solicitação preliminar devem corresponder aos cabeçalhos no elemento `AllowedHeaders` na configuração de CORS. 

Veja a seguir um exemplo de configuração de CORS. Para criar uma configuração de CORS, consulte [Configurar CORS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html). Para ver mais exemplos de configuração de CORS, consulte [Elementos de uma configuração de CORS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManageCorsUsing.html). 

Para obter orientação sobre como configurar e solucionar problemas de regras de CORS, consulte [Como configuro o CORS no Amazon S3 e confirmo as regras do CORS usando cURL?](https://repost.aws/knowledge-center/s3-configure-cors) no Centro de Conhecimento do AWS re:Post.

------
#### [ JSON ]

```
[
    {
        "AllowedHeaders": [
            "Authorization"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "http://www.example1.com"
        ],
        "ExposeHeaders":  [
             "x-amz-meta-custom-header"
        ]
    
    }
]
```

------

Para testar a configuração de CORS, é possível enviar uma verificação `OPTIONS` preliminar usando o comando CURL a seguir. CURL é uma ferramenta de linha de comando que pode ser usada para interagir com o S3. Para ter mais informações, consulte [CURL](https://curl.se/). 

```
 curl -v -X OPTIONS \
  -H "Origin: http://www.example1.com" \
  -H "Access-Control-Request-Method: PUT" \
  -H "Access-Control-Request-Headers: Authorization" \
  -H "Access-Control-Expose-Headers: x-amz-meta-custom-header"\
     "http://bucket_name.s3.amazonaws.com/object_prefix_name"
```

No exemplo acima, o comando `curl -v -x OPTIONS` é usado para enviar uma solicitação preliminar ao S3 e perguntar se o S3 tem permissão para enviar uma solicitação `PUT` em um objeto por meio do `http://www.example1.com` de origem cruzada. Os cabeçalhos `Access-Control-Request-Headers` e `Access-Control-Expose-Headers` são opcionais.
+ Em resposta ao cabeçalho `Access-Control-Request-Method` na solicitação `OPTIONS` preliminar, o Amazon S3 exibe a lista de métodos permitidos quando há correspondência com os métodos solicitados. 
+ Em resposta ao cabeçalho `Access-Control-Request-Headers` na solicitação `OPTIONS` preliminar, o Amazon S3 exibe a lista de cabeçalhos permitidos quando há correspondência com os cabeçalhos solicitados.
+ Em resposta ao cabeçalho `Access-Control-Expose-Headers` na solicitação `OPTIONS` preliminar, o Amazon S3 exibe uma lista de cabeçalhos permitidos quando os cabeçalhos solicitados podem ser acessados por scripts em execução no navegador.

**nota**  
Ao enviar uma solicitação preliminar, se algum dos cabeçalhos da solicitação de CORS não for permitido, nenhum dos cabeçalhos de CORS de resposta será exibido.

Em resposta a essa solicitação `OPTIONS` preliminar, você receberá uma resposta `200 OK`. Para conhecer os códigos de erro comuns recebidos ao testar o CORS e ter mais informações para resolver problemas relacionados ao CORS, consulte [Solução de problemas do CORS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors-troubleshooting.html). 

```
< HTTP/1.1 200 OK
< Date: Fri, 12 Jul 2024 00:23:51 GMT
< Access-Control-Allow-Origin: http://www.example1.com
< Access-Control-Allow-Methods: GET, PUT, POST, DELETE 
< Access-Control-Allow-Headers: Authorization
< Access-Control-Expose-Headers: x-amz-meta-custom-header
< Access-Control-Allow-Credentials: true
< Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
< Server: AmazonS3
< Content-Length: 0
```