Há razões para não usar o JSONP AJA~X pedidos?
-
09-06-2019 - |
Pergunta
Se você está construindo uma AJA~Xy
app, existem desvantagens para usar JSONP
pedidos/respostas, mesmo se você não estiver planejando em qualquer cross-domain
pedidos?
A única coisa que posso pensar é que, há um par de bytes extra para o retorno de chamada wrapper...
Editar:
Eu encontrei este o que também sugere security and error handling
como potenciais problemas...
Não há manipulação de erro.O
script injection
ou funciona, ou não.Se há um erro de oinjection
, ele vai bater a página, e curto de uma janela grande manipulador de erro (ruim, ruim, muito ruim), você precisa ter certeza de que o valor de retorno é válido naserver side
.
Eu não acho que error handling
é muito de um problema...a maioria de nós gostaria de usar uma biblioteca para gerar o JSON
...o bem-formedness de minha resposta não é uma preocupação para esta pergunta.
e segurança:
Há documentos na web que pode ajudar, mas como uma verificação superficial, gostaria de verificar o indicador no
server side
script.
parece que este é um problema potencial com qualquer tipo de resposta...certamente, não há nada de exclusivo JSONP
na área de segurança...?
Solução
Desvantagem?É bastante limitado - você disparar um "GET" solicitar e obter de volta algum script que é executado.Você não receba tratamento de erro se o servidor lança um erro, então você precisa quebrar todos os erros em JSON bem.Você realmente não pode cancelar ou repetir a solicitação.Você está à mercê dos vários navegador autor opiniões de "corrigir" o comportamento dinamicamente gerado <script>
as tags.A depuração é um pouco mais difícil.
O que disse, eu usei ele em uma ocasião, e não sofria.YMMV.
Outras dicas
Recuperação de erros quando um jsonp falha de chamada é possível.
http://code.google.com/p/jquery-jsonp/
Espero que ajude.
Eu diria que a maior limitação pode ser a sobrecarga extra para ter o navegador compor uma tag de script para chamar o servidor.Além de JSONP é realmente considerado AJAX, pois, na verdade, não usar o objeto XMLHttpRequest?
Aqui está outro bit você pode querer considerar com JSONP..possíveis vazamentos de memória..