2017-10-19 34 views
0

Étant donné qu'une API CORS nécessite un cookie de session pour suivre les utilisateurs au cours du processus de paiement, il existe des problèmes dans plusieurs navigateurs où le cookie n'est défini qu'après l'utilisateur. visite le site sur lequel l'API est hébergée.Cookies tiers - API interdomaines avec suivi de session

Par exemple:

johnny.com utilise une API JSON CORS de jacob.com. jacob.com définit un cookie après le premier appel AJAX, mais certains navigateurs ne vont pas définir le cookie pour les appels suivants. Par conséquent l'API ne fonctionnera pas comme prévu.

Navigateur Comportement:

  • Chrome semble fonctionner très bien à moins que des "cookies tiers" sont délibérément désactivés. Il ne semble pas être une solution de contournement pour cela.

  • IE ne permet pas de définir le cookie initialement, à moins qu'un en-tête de politique de confidentialité P3P ne soit retourné avec l'appel initial.

  • Safari ne permet pas le cookie initialement fixé à moins d'un hack est utilisé (voir http://measurablewins.gregjxn.com/2014/02/safari-setting-third-party-iframe.html)

Toute idée sur la façon de travailler autour de ces questions est grandement appréciée.

Répondre

0

Malheureusement, il semble qu'il n'y ait pas d'option pour que cela fonctionne sur tous les navigateurs.

Safari now restricts utilisation de cookies par des tiers. Il semble que le mieux est d'évaluer les alternatives:

  • Installation d'un serveur proxy qui redirige les appels vers les différents services (par exemple, lorsque vous appuyez sur johnny.com/jacob/abc, agir comme proxy pour récupérer jacob .com/abc)
  • Utiliser la connexion OAuth sur l'API (il pourrait être impossible)
  • Déplacer l'API sous johnny.com/api/...

Paypal a également créé plusieurs solutions js à essayer de contourner ce genre de problèmes: https://medium.com/@bluepnume/introducing-paypals-open-source-cross-domain-javascript-suite-95f991b2731d