Ce code fonctionne bien dans la machine de développement et sur http mais quand je passe à https cesse de fonctionner Toute aide sera grandement appréciée

Le code est de zippopotamus est utilisé pour obtenir la ville et l'état affichés dans leurs champs de saisie respectifs en insérant d'abord le code postal dans son champ de saisie ici j'ai 2 div qui sont cachés citybox statebox

Lorsque vous insérez le bon zip, ces cases s'afficheront avec la citybox et la statebox

Modifier Le code de travail est maintenant affiché ici Merci à tous ici et à la suggestion fournie par Anders Passer de http à https

$(document).ready( function()  {

  $("#citybox").hide();
  $("#statebox").hide();


  $('input#zip').bind("change keyup input",function() {
    var zip_in = $(this);
    var zip_box = $('#zipbox');

    if (zip_in.val().length<5)
    {

      zip_box.removeClass('has-error has-success');
    }
    else if ( zip_in.val().length>5)
    {

      zip_box.addClass('has-error').removeClass('has-success');
    }

    else if ((zip_in.val().length == 5) ) 
    {

      var urls =["https://api.zippopotam.us/us/" ,"https://api.zippopotam.us/pr/","https://api.zippopotam.us/vi/"];

      $.each(urls, function(i,u){ 
        $.ajax(u + zip_in.val(),{
          cache: false,
          dataType: 'json',
          type: 'GET',
          success: function(result, success) {
            // Make the city and state boxes visible

            $('#citybox').slideDown();
            $('#statebox').slideDown();

            // US Zip Code Records Officially Map to only 1 Primary Location for  abbreviation
            places = result['places'][0];
            $('#city').val(places['place name']);
            $('#state').val(places['state']);
            zip_box.addClass('has-success').removeClass('has-error');
          },
          error: function(result, success) {
            zip_box.removeClass('has-success').addClass('has-error');

          }
        });
      });
    }
  });
});
0
JRR 5 mars 2016 à 02:04

3 réponses

Meilleure réponse

Zippopotam.us prend en charge https pour son api. Remplacez les URL par "https://api.zippopotam.us/" et cela devrait fonctionner.

1
Anders Elmgren 4 mars 2016 à 23:17

Le problème vient du fait que vous atteignez une ressource non sécurisée ( http://api.zippopotam.us/us/) à partir d'un environnement sécurisé (votre site fonctionnant sur https). Ce n'est pas permis. Vos options sont:

  • vérifiez si ce serveur fonctionne également sur https;
  • écrire du code back-end pour appeler ce service, fonctionnant comme un proxy;
  • changer pour un fournisseur qui prend en charge https.
1
Jodevan 4 mars 2016 à 23:14

Jetez un œil à la Politique de même origine.

Vous ne pouvez pas faire de demande à un autre domaine via HTTP si votre site fonctionne sous HTTPS.

Ainsi, vous devez utiliser l'API via HTTPS ou, comme @Jodevan l'a dit, utiliser votre serveur comme proxy.

0
FredMaggiowski 4 mars 2016 à 23:18