web-dev-qa-db-fra.com

iOS 13 beta WebKit interrompt la prise en charge des cookies

J'ai une application basée sur Cordova qui fonctionne, avec actuellement une base d'utilisateurs relativement importante. Pas de problème jusqu'à présent, sauf celui-ci qui Apple ne résoudra pas. C'est correct cependant, nous avons créé des solutions de contournement laides juste pour continuer à avancer ...

Mais, voici iOS 13 (bêta 8) et nous apprenons que WebKit dans cette version ne renvoie pas du tout de cookies au serveur . Pas une fois, pas au début - jamais. La sortie d'iOS 13 est dans quelques semaines et je ne sais tout simplement pas ce que nous devons faire lorsque tous les utilisateurs y mettent à niveau et que notre application cesse de fonctionner ...

Nous utilisons des cookies pour la gestion des sessions, rien d'extraordinaire, un backend classique basé sur l'ancienne jetée. La solution de contournement que j'ai faite pour le problème de première utilisation consiste à ajouter le paramètre jsessionid à l'URL à chaque demande, puis à le supprimer côté serveur, à convertir en cookie et à envoyer plus loin dans la chaîne. Je ne sais pas s'il est sûr de l'utiliser tout le temps en supposant que WebKit cesse de renvoyer des cookies. Voici quelques bugs liés en attente mais il est peu probable Apple les examinera même:

Quelqu'un connaît des problèmes similaires? Comment gères-tu cela?

6
Dima

Il a été reconnu et corrigé par l'équipe WebKit et est publié dans iOS 13.2. J'ai testé la version bêta et elle semble fonctionner maintenant.

0
Dima

Ajoutez ce plugin https://github.com/Oracle/cordova-plugin-wkwebview-file-xhr , il intercepte les requêtes XHR et les traite par ce plugin. Ça marche pour moi.

1
Doctor.Who.

J'ai eu le même problème avec mon application ionic 3. J'ai trouvé des solutions de contournement en utilisant:

En remplaçant les appels API de rxjs par l'appel http Objective C natif, le cookie persiste bien à partir de la réponse http du backend. Vous pouvez peut-être essayer avec ça ...

1
Stéphane Maleyrie