J'ai récemment remplacé mon Je charge les images à partir d'une URL qui ressemble à J'ai ajouté l'en-tête Content-Security-Policy pour permettre le contenu mixte, et cela ressemble à ceci (les parties non pertinentes ont été supprimées): Cela fonctionne pour la plupart des appareils et laisse la requête à J'ai confirmé que l'en-tête est bien envoyé et que les appareils problématiques exécutent la dernière version d'iOS (12.1.4). Tout conseil sur la façon d'empêcher mes demandes personnalisées d'être bloqué serait très apprécié! UIWebview
par un WKWebview
dans mon application hybride. J'utilise un schéma personnalisé pour charger des images à partir de la partie native de l'application, comme recommandé par Apple ici:
https://developer.apple.com/videos/play/wwdc2017/220/ mycustomscheme://?path=somepath
Content-Security-Policy: default-src 'self' www.myurl.com ; img-src 'self' mycustomscheme: ; script-src 'self' 'unsafe-inline' 'unsafe-eval' ; report-uri https://www.myreporturl.com/
mycustomscheme code> parcourez et signalez à
myreporturl
si quelque chose a été bloqué. Cependant, sur certains appareils, les demandes personnalisées sont bloquées avec cette erreur:
[Avertissement] [bloqué] La page https://www.myurl.com n'a pas été autorisée à afficher du contenu non sécurisé de mycustomscheme: //? path = somepath
et aucun rapport n'est envoyé à myreporturl
, comme si l'en-tête n'était pas du tout chargé.
4 Réponses :
Cause: Depuis iOS 9, iOS autorise uniquement votre application à communiquer avec les serveurs qui implémentent par défaut la sécurité des meilleures pratiques. Les valeurs doivent être définies dans Info.plist pour permettre la communication avec des serveurs non sécurisés.
Solution: Ajoutez le code suivant dans votre info.plist pour approuver votre domaine.
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>www.myurl.com</key> <dict> <key>NSExceptionRequiresForwardSecrecy</key> <false/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSIncludesSubdomains</key> <true/> </dict> </dict>
J'ai essayé, mais je suis toujours bloqué. De plus, mon problème réside dans la communication entre JS et la partie native de l'application, donc je ne m'attendrais pas à ce qu'elle soit bloquée par NSAppTransportSecurity.
Essayez ceci:
Ajoutez la ligne suivante dans votre fichier info.plist:
<key>LSApplicationQueriesSchemes</key> <array> <string>mycustomscheme</string> </array>
Assurez-vous de remplacer mycustomscheme
par votre propre schéma .
Merci, mais toujours bloqué. LSApplicationQueriesSchemes est destiné aux URL que vous souhaitez ouvrir. Je n'essaye pas d'ouvrir une URL, j'essaye de passer une image à partir du code natif.
Essayez ce qui suit pour charger la politique relative aux images:
img-src 'self' 'unsafe-inline' 'unsafe-eval' data: http: https: mycustomscheme: filesystem: file:;
Putain de merde, cela semble l'avoir résolu. Je ne peux pas dire que je comprends pourquoi, mais je vais le prendre! Je vous remercie!
Vous êtes le bienvenu! Je suis content que cela ait aidé. Ce lien explique les options d'img-src plus en détail. Bonne chance! developer.mozilla.org/ fr-FR / docs / Web / HTTP / Headers /…
J'ai le même problème mais avec le chargement d'une feuille de style locale référencée via un élément link
dans le head
. Cela fonctionne-t-il différemment pour style-src
?
Son problème https et http Assurez-vous que tout votre contenu est https :. L'utilisation de plusieurs ressources de sites Web les unes dans les autres le mélange. Essayez de ne pas faire CORS.
Je suppose que je ne me suis pas suffisamment expliqué dans le message original. J'essaie de charger l'image de l'application elle-même (la partie native de l'application) dans le JS en cours d'exécution dans WKWebview comme suggéré par Apple dans le lien ci-dessus. Cela n'aurait pas de sens de le faire avec https.