/ / JSONP fonctionne dans Chrome mais pas dans Firefox / IE? - javascript, jquery, ajax, jsonp, cors

JSONP fonctionne-t-il dans Chrome mais pas dans Firefox / IE? - javascript, jquery, ajax, jsonp, cors

Je développe un site mobile et j'utilise JSONPdemandes via jQuery pour contacter le serveur de données pour récupérer des informations à afficher sur le site mobile. On m'a dit de ne pas utiliser de script PHP comme proxy car cela entraînerait une charge supplémentaire inutile sur le serveur mobile (des millions d'utilisateurs) et de le faire strictement côté client. J'utilise le code suivant:

var get_vars = "&callback=?&var=here";

$.ajax({
url: "http://server.com/script?" + get_vars,
type: "GET",
dataType: "jsonp",
//xhrFields: { withCredentials: true },
//crossDomain: true,
success: function(data){
console.log(data)
}
});

Le serveur utilise l'authentification par cookie pourdéterminer si l'utilisateur est connecté avant de renvoyer les données. Curieusement, ce code a fonctionné une fois sur Firefox. Les recharges / actualisations ultérieures de la page ont entraîné la non-vérification des informations d'identification par le serveur. Au début, je pensais que c'était dû à des modifications de mon code, mais après l'avoir testé dans Google Chrome, cela fonctionne 100% du temps. Il n'y a pas non plus d'erreurs JS affichées dans la console pour Firefox / IE. Je me suis assuré que ce n'était pas un problème de mise en cache et j'ai également essayé ceci sur une autre machine avec Firefox, en vain. Ce problème se produit également sur Windows Phone et la dernière version d'Internet Explorer sur Windows 8. Je suppose que ce doit être un cookie. liés et en quelque sorte les informations d'identification ne sont pas transmises au serveur distant.

Quant à essayer d'utiliser CORS ... Je l'ai essayé (comme vous pouvez le voir les bits commentés, plus j'ai essayé d'ajouter $ .support.cors = true), et je n'ai pas pu le faire fonctionner. J'ai continué à recevoir l'erreur "cross domain non autorisé", malgré le serveur envoyer les en-têtes suivants:

Access-Control-Allow-Credentials: true Contrôle d'accès-Autoriser-Origine: *

Quelqu'un a-t-il une idée de ce qui pourrait en être la cause? J'aimerais que cela fonctionne avec JSONP car il fonctionne déjà dans Chrome.

Notes supplémentaires: Il semble qu'un autre développeur n'ait pas les mêmes problèmes que moi. Il rapporte qu'il fonctionne dans Firefox 100% du temps. J'ai même essayé ce qui suit:

  • Chargement de Firefox dans une machine virtuelle et rencontré les mêmes problèmes (pour éviter un problème de système d'exploitation)
  • Cache vide sur mon téléphone, wifi désactivé et connecté via une adresse IP distincte avec le même problème

Pouah. Je commence à penser que cela pourrait être côté serveur, même si je ne sais pas pourquoi, car cela fonctionnait à 100% lorsque j'utilisais PHP.

Réponses:

0 pour la réponse № 1

Il semble que j'avais oublié de changer leméthode que j'utilisais pour me connecter via AJAX. J'utilisais uniquement la méthode JSONP sur les appels de données après avoir été connecté. Lors de l'utilisation de CORS, il semble que les données du cookie soient séparées et le serveur distant ne lisait pas correctement les données du cookie.

TLDR; Ne mélangez pas CORS et JSONP ensemble - assurez-vous d'utiliser l'un ou l'autre pour vous assurer de ne pas rencontrer ce problème vous-même!