Maison  >  Article  >  interface Web  >  Compétences Jsonp post solution_javascript inter-domaines

Compétences Jsonp post solution_javascript inter-domaines

WBOY
WBOYoriginal
2016-05-16 15:51:251029parcourir

Récemment, j'ai rencontré un tel problème dans le projet. Concernant le problème inter-domaines jsonp, la valeur get est OK, mais la valeur post ne l'est pas. J'ai donc lu beaucoup d'informations à ce sujet sur Internet, et enfin le. le problème a été résolu. Résolu, je prendrai le temps de le partager avec vous aujourd'hui.

Description :
http://www.t1.com/index.phpURL du serveur
Bien sûr, il s'agit de ma configuration locale et doit être remplacée par ma propre adresse correspondante.

Code client :

<script>
  $(function(){
     
    var url = 'http://www.t1.com/index.php';
    $.ajax({
      type:      'post',
      url:      url,
      data:      {name:'wangyulu'},
      dataType:    'jsonp',
      success:function(result){
        console.log(result);
      }
    });
     
  });
 </script>

Code du serveur :

 
<&#63;php
if($_POST){
  $arr = array('name'=>$_POST['name'], 'age'=>23);
  echo json_encode($arr);
}

Le navigateur fonctionne comme indiqué ci-dessous :

Regardez les résultats en cours. Même si la méthode de transmission est définie sur publication, Jquery basculera automatiquement sur get. Est-ce que Jsonp ne prend vraiment pas en charge la soumission de publication ?

Après beaucoup de problèmes, j'ai finalement trouvé des informations à ce sujet dans stackoverflow. Il semble que les étrangers rencontrent également de tels problèmes. Je publierai l'adresse pour tout le monde

.
http://stackoverflow.com/questions/3860111/how-to-make-a-jsonp-post-request-that-specifies-contenttype-with-jquery

Les points clés sont les suivants :

En regardant l'image ci-dessus, nous avons constaté qu'il y a des changements dans les marques de flèches. Nous ne nous en soucions pas pour l'instant. Après avoir lutté pendant si longtemps, mettons-le d'abord dans le programme, juste au cas où cela pourrait être le cas. fait

Modifications de clients :

Ajouté : crossDomain : true
Modification : dataType : "json"

Ajout côté serveur :

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Max-Age: 1000');

Les résultats en cours d'exécution sont les suivants :

À ce stade, nous avons constaté que le problème était finalement résolu, mais nous avons observé en détail que le délai de demande est très long, il semble que les étrangers n'aient pas de solution efficace,

Enfin, ce que je veux dire, c'est qu'il est vraiment difficile de supporter parfaitement JSONP en mode POST. Cela prend beaucoup de temps.

Le contenu ci-dessus peut être lié à d'autres points techniques. Si vous êtes intéressé, vous pouvez l'étudier vous-même. La solution principale ici est Jsonp. S'il n'est pas bien écrit, ne vous plaignez pas, merci !

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn