Supposons que votre site Web dispose d'une GetUserméthode Web:
http://www.example.com/User/GetUser/32
qui renvoie une réponse JSON:
{ "Name": "John Doe" }
Si cette méthode n'accepte que les requêtes POST, le contenu ne sera renvoyé au navigateur que si une requête AJAX est effectuée à l' http://www.example.com/User/GetUser/32aide de la méthode POST. Notez qu'à moins que vous n'ayez implémenté CORS , le navigateur protégera les données des autres domaines faisant cette demande au vôtre.
Cependant, si vous avez autorisé les requêtes GET à ce moment-là et que vous faites une requête AJAX similaire à celle ci-dessus avec GET au lieu de POST, un utilisateur malveillant pourrait inclure votre JSON dans le contexte de son propre site en utilisant une scriptbalise dans le HTML. par exemple sur www.evil.com:
<script src="http://www.example.com/User/GetUser/32"></script>
Ce JavaScript devrait être inutile www.evil.comcar il ne devrait y avoir aucun moyen de lire l'objet retourné par votre méthode web. Cependant, en raison de bugs dans les anciennes versions de navigateurs (ex: Firefox 3), il est possible que des objets prototypes JavaScript soient redéfinis et permettent www.evil.comde lire vos données renvoyées par votre méthode. C'est ce qu'on appelle le détournement JSON.
Voir cet article pour quelques méthodes pour éviter cela. Cependant, ce n'est pas un problème connu avec les dernières versions des navigateurs modernes (Firefox, Chrome, IE).