web-dev-qa-db-fra.com

Chrome bloque maintenant toutes les requêtes jsonp de https vers http?

À un moment donné récemment Chrome a cessé d'afficher les données chargées via jsonp avec l'erreur

[bloqué] La page à https://user.example.com/category/12345 a généré un contenu non sécurisé à partir de http://livedata.example.com/Data.svc/jsonp/ GetData? Category = 12345 & callback = _jsp & _1346417951424 = .

Il fonctionne toujours bien sur tous les autres navigateurs et a été confirmé sur plusieurs ordinateurs différents exécutant Chrome.

La seule mention que j'ai vue de ce problème avant, c'est lorsque la page a été servie à partir d'un des propres domaines de Google (une fonctionnalité de sécurité pour Google Apps, je suppose?), Est-ce quelque chose qui a été activé sur tous les domaines maintenant dans une version récente de Chrome?

Idéalement, nous ne voulons pas avoir à activer https sur notre sous-domaine livesata en raison de la charge de serveur supplémentaire que cela entraînerait, les données sont toutes accessibles au public, il n'est donc pas urgent de les crypter.

29
Brainfloat

Il devrait certainement le bloquer - il n'est pas sûr et brise la promesse de HTTPS.

Une extraction de ressource JSONP est effectuée en créant un <script> ressource pointant vers la cible. Cela signifie que le serveur cible peut exécuter n'importe quel JavaScript qu'il aime sur la page incluse, et donc que tout homme du milieu peut injecter un script arbitraire dans une page supposée protégée par HTTPS (par exemple, ajouter un enregistreur de frappe ou remplacer complètement le contenu de la page ). Une page HTTPS avec un <script> provenant de HTTP n'est pas plus sécurisé qu'une simple page HTTP.

Vous devrez fournir une version HTTPS de votre flux de données, si vous souhaitez que les pages HTTPS puissent y accéder. Sinon, les navigateurs devraient, à tout le moins, produire des avertissements. Chrome maintenant le blocage par défaut ne change pas la nature du problème, il vous donne juste le Push supplémentaire dont vous avez besoin pour le résoudre correctement.

19
bobince

<script src="//domain.com/script.js"></script> résout le problème si le serveur distant autorise HTTPS ... // définira automatiquement le protocole sur https si le site est accessible par https.

7
Stefan