O que é o JSONP e como funciona?
JSONP (JSON with Padding) é uma técnica utilizada para contornar a política de mesma origem (same-origin policy) no navegador, permitindo que solicitações de dados sejam feitas para servidores em diferentes domínios.
A mesma origem policy é uma política de segurança que impede que scripts em uma página da web acessem recursos (por exemplo, solicitações HTTP) em um domínio diferente do que a página da web foi carregada. Essa política é implementada pelos navegadores para evitar ataques de cross-site scripting (XSS) e proteger a segurança do usuário.
No entanto, às vezes você precisa fazer uma solicitação de dados para um servidor em um domínio diferente. O JSONP permite que você faça isso, envolvendo os dados em uma função de retorno (callback function) como parte de uma tag <script>. Dessa forma, você pode carregar os dados do servidor em seu aplicativo.
Aqui está um exemplo de como o JSONP funciona:
Suponha que você tenha um aplicativo hospedado em https://www.meuapp.com e queira solicitar dados de um servidor em https://www.outrodominio.com.
Em vez de fazer uma solicitação AJAX tradicional, você pode criar uma tag <script> dinamicamente em seu aplicativo, colocando a URL do servidor como o atributo src. Você também precisa fornecer um nome de função de retorno como parâmetro na URL, para que o servidor saiba para onde enviar os dados.
Por exemplo:
<script src="https://www.outrodominio.com/api/dados?callback=meuCallback"></script>O servidor retornará os dados no formato JSON, mas envolto na função de retorno. Por exemplo:
meuCallback({"id":1, "nome":"João", "idade":25})Em seu aplicativo, você precisa implementar a função de retorno (meuCallback no exemplo acima), que será chamada automaticamente quando os dados forem carregados. Dentro dessa função, você pode processar os dados como desejar.
Lembre-se de que o servidor também precisa estar configurado para suportar JSONP, respondendo às solicitações com o tipo de conteúdo application/javascript e envolvendo os dados na função de retorno correta.
O JSONP é uma técnica útil quando você precisa acessar dados em um domínio diferente, mas é importante lembrar que ela tem algumas limitações de segurança e que a mesma origem policy existe para proteger os usuários.