# Negar uma requisição por país

Negue ou permita uma requisição com base no país do visitante, resolvido a partir de dados de GeoIP na rede global da Azion. Use esse padrão em uma função de firewall para impor restrições geográficas, bloqueando o tráfego de regiões específicas antes que ele chegue à sua aplicação.

```js
async function firewallHandler(event){
    // Access the country code through geoip
    let countryCode = event.request.metadata["geoip_country_code"]

    // Do some logic here
    // In this example, we are blocking access from Brazil
    if (countryCode === "BR"){
        event.deny();
    }

    // Then, if it comes from any other country,
    // the processing continues
    event.continue();
}

addEventListener("firewall", (event)=>event.waitUntil(firewallHandler(event)));
```

## Como funciona

Este código é executado como um handler de `firewall`, ou seja, dentro de um firewall e antes de a requisição chegar a uma aplicação. Ele registra o handler com `addEventListener("firewall", ...)` e executa o trabalho assíncrono dentro de `event.waitUntil()`. Consulte [Functions no Firewall](/pt-br/documentacao/plataforma/firewall/functions/) para conhecer o conjunto completo de ações que um handler de firewall pode chamar.

O handler lê o país do visitante em `event.request.metadata["geoip_country_code"]`. Quando a requisição vem do Brasil, ele chama `event.deny()`, que retorna uma resposta 403 padrão e interrompe o processamento. Para requisições de qualquer outro país, `event.continue()` permite que a requisição prossiga até seu destino.

## Recursos relacionados

- [Exemplos em JavaScript](/pt-br/documentacao/plataforma/functions/javascript-exemplos.md): Consulte os outros padrões de sintaxe da coleção.
- [Functions no Firewall](/pt-br/documentacao/plataforma/firewall/functions.md): Leia a referência de todas as ações que um handler de firewall pode chamar.
- [API de metadados](/pt-br/documentacao/devtools/runtime/api-reference/metadata.md): Consulte os campos de metadados da requisição, incluindo os valores de GeoIP.
- [Functions Instances para Firewall](/pt-br/documentacao/plataforma/firewall/functions-instances.md): Veja como uma função é instanciada em um firewall e acionada por uma regra.
- [Limites para funções em um firewall](/pt-br/documentacao/plataforma/functions/limites.md#limites-para-funcoes-em-um-firewall): Os limites que uma função de firewall compartilha com toda função, e onde ficam os limites do próprio firewall.
