web-dev-qa-db-fra.com

Safari 9 a interdit l'exécution de contenu non sécurisé?

après la mise à niveau vers Safari 9, je reçois cette erreur dans le navigateur:

[Warning] [blocked] The page at https://localhost:8443/login was not allowed to run insecure content from http://localhost:8080/assets/static/script.js.

Tout le monde sait comment activer l'exécution de contenu non sécurisé sur le nouveau Safari?

28
Staelen

Selon les forums de support Apple Safari ne vous permet pas de désactiver le blocage sur le contenu mixte.

Bien que cela soit frustrant pour l'utilisabilité dans des cas légitimes comme le vôtre, cela semble faire partie de leurs efforts pour forcer la diffusion de contenu sécurisé/les meilleures pratiques de diffusion de contenu.

Comme solution pour vous, vous pouvez soit mettre à niveau la connexion HTTP vers HTTPS (ce que vous semblez avoir fait), soit proxy votre contenu via une connexion HTTPS avec un service compatible HTTPS (ou, dans votre cas, le port).

4
winhowes

Vous pouvez résoudre le problème HTTPS en utilisant HTTPS localement avec un certificat SSL auto-signé. Heroku a un excellent article sur comment en générer un .

Après avoir configuré SSL sur tous vos serveurs de développement, vous obtiendrez toujours une erreur lors du chargement de la ressource dans Safari car un certificat non approuvé est utilisé (les certificats SSL auto-signés ne sont pas approuvés par les navigateurs par défaut car ils ne peuvent pas être vérifiés avec une autorité de confiance ). Pour résoudre ce problème, vous pouvez charger l'URL problématique dans un nouvel onglet dans Safari et le navigateur vous invitera à autoriser l'accès. Si vous cliquez sur "Afficher le certificat" dans l'invite, il y aura une case à cocher dans la vue des détails du certificat pour "Toujours autoriser le contenu de l'hôte local". Le vérifier avant d'autoriser l'accès stockera le paramètre dans Safari pour l'avenir. Après avoir autorisé l'accès, rechargez simplement la page présentant à l'origine un problème et vous devriez être prêt à partir.

Ceci est un cas d'utilisation valide en tant que développeur, mais assurez-vous de bien comprendre les implications et les risques de sécurité que vous ajoutez à votre système en effectuant cette modification!

1
munsellj

Si comme moi tu as

  • frontend sur port1
  • backend sur port2b
  • voulez charger le script http://localhost:port1/app.js de http://localhost:port2/backendPage

J'ai trouvé une solution de contournement simple: redirigez simplement avec la réponse http tout http://localhost:port2/localFrontend/*path à http://localhost:port1/*path à partir de la configuration de votre serveur principal.

Ensuite, vous pouvez charger votre script directement depuis http://localhost:port2/localFrontend/app.js au lieu d'une URL directe. (ou vous pouvez configurer une URL de base pour toutes vos ressources)

De cette façon, Safari pourra charger du contenu à partir d'un autre domaine/port sans avoir besoin d'une configuration https.

0
Sebastien Lorber