O que é: JSONP (JSON with Padding)

Tempo de Leitura: 4 min

O JSONP (JSON with Padding) é uma técnica utilizada para contornar a política de mesma origem (Same-Origin Policy) imposta pelos navegadores, permitindo que requisições sejam feitas entre diferentes domínios. Neste glossário, iremos explorar em detalhes o que é o JSONP, como ele funciona e como pode ser utilizado para melhorar a comunicação entre servidores e clientes.

O que é JSONP?

O JSONP é uma técnica que permite a comunicação entre domínios diferentes através do uso de tags de script. Ele é uma extensão do formato JSON (JavaScript Object Notation), que é amplamente utilizado para a troca de dados entre aplicações web. O JSONP adiciona um “padding” ao JSON, envolvendo-o em uma função JavaScript, o que permite que ele seja interpretado pelo navegador como um script.

Como funciona o JSONP?

Para entender como o JSONP funciona, é importante compreender a política de mesma origem imposta pelos navegadores. Essa política impede que um script em um domínio acesse recursos em outro domínio, a menos que ambos os domínios tenham a mesma origem. A mesma origem é definida pela combinação de protocolo, domínio e porta.

O JSONP contorna essa restrição ao utilizar tags de script para fazer a requisição de dados entre domínios diferentes. Quando um cliente faz uma requisição JSONP, ele inclui um parâmetro na URL da requisição que indica o nome da função que será chamada quando os dados estiverem disponíveis. O servidor, por sua vez, retorna o JSON envolvido nessa função, permitindo que o cliente interprete-o como um script e execute a função definida.

Por que usar o JSONP?

O JSONP é amplamente utilizado em situações em que é necessário fazer requisições entre domínios diferentes. Ele é especialmente útil quando se trabalha com APIs de terceiros, que podem estar hospedadas em domínios diferentes do cliente. Ao utilizar o JSONP, é possível contornar a política de mesma origem e obter os dados necessários para a aplicação.

Além disso, o JSONP é suportado por todos os navegadores modernos, o que o torna uma opção viável para a comunicação entre servidores e clientes. Ele também é fácil de implementar e não requer a instalação de bibliotecas adicionais.

Exemplo de uso do JSONP

Para ilustrar o uso do JSONP, vamos supor que temos uma aplicação web que precisa exibir informações sobre o clima em uma determinada cidade. Para obter essas informações, utilizamos uma API de terceiros que retorna os dados no formato JSON.

Para fazer a requisição dos dados utilizando JSONP, precisamos incluir um parâmetro na URL da requisição que indica o nome da função que será chamada quando os dados estiverem disponíveis. Por exemplo:

http://api.weather.com/forecast?city=London&callback=processData

Nesse exemplo, a função processData será chamada quando os dados estiverem disponíveis. O servidor retorna o JSON envolvido nessa função, permitindo que o cliente interprete-o como um script e execute a função definida.

Vantagens do JSONP

O JSONP oferece várias vantagens em relação a outras técnicas de comunicação entre domínios. Uma das principais vantagens é a sua simplicidade de implementação. Ao contrário de outras técnicas, como o CORS (Cross-Origin Resource Sharing), o JSONP não requer configurações adicionais no servidor. Basta incluir o parâmetro de callback na URL da requisição e definir a função que será chamada quando os dados estiverem disponíveis.

Além disso, o JSONP é suportado por todos os navegadores modernos, o que o torna uma opção viável para a comunicação entre servidores e clientes. Ele também é amplamente utilizado e possui uma vasta documentação disponível, o que facilita a sua adoção em projetos.

Desvantagens do JSONP

Apesar das vantagens, o JSONP também apresenta algumas desvantagens que devem ser consideradas. Uma das principais desvantagens é a falta de suporte para requisições assíncronas. Como o JSONP utiliza tags de script para fazer as requisições, ele não suporta requisições assíncronas, o que pode impactar o desempenho da aplicação.

Outra desvantagem do JSONP é a falta de suporte para métodos HTTP além do GET. O JSONP utiliza tags de script para fazer as requisições, o que limita o uso de outros métodos HTTP, como POST, PUT e DELETE. Isso pode ser um problema em situações em que é necessário enviar dados sensíveis para o servidor.

Conclusão

O JSONP é uma técnica poderosa para contornar a política de mesma origem imposta pelos navegadores e permitir a comunicação entre domínios diferentes. Ele é amplamente utilizado em situações em que é necessário fazer requisições entre domínios diferentes, como no caso de APIs de terceiros. Apesar das vantagens, o JSONP também apresenta algumas desvantagens, como a falta de suporte para requisições assíncronas e para métodos HTTP além do GET. No entanto, ele ainda é uma opção viável e amplamente suportada pelos navegadores modernos.