# Adicionar um response header

Adicione um response header 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 marcar ou sinalizar o tráfego de regiões específicas, por exemplo para acionar lógica por país mais adiante sem bloquear a requisiçã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, if the request comes from Brazil, we add a header to the response
    if (countryCode === "BR"){
        event.addResponseHeader("test", "true");
    }

    // 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 não no caminho da requisição da aplicação. Ele registra o handler com `addEventListener("firewall", ...)` e envolve o trabalho assíncrono em `event.waitUntil()`, para que o processamento seja concluído antes do fim do evento. 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 código do país em `event.request.metadata["geoip_country_code"]` e, quando o visitante é do Brasil, chama `event.addResponseHeader("test", "true")` para anexar um header personalizado à resposta. Ele termina com `event.continue()`, que permite à requisição prosseguir até seu destino em vez de ser bloqueada.

## 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.
- [Escopo e limites](/pt-br/documentacao/plataforma/functions.md#escopo-e-limites): As linguagens, o runtime e os contextos de execução para os quais uma função é escrita.
