web-dev-qa-db-fra.com

Pourquoi utiliser des URL relatives au protocole?

StackOverflow a souvent posé la question de savoir ce que cela signifie:

 <script src="//cdn.example.com/somewhere/something.js"></script>

Cela donne l’avantage que si vous y accédez via HTTPS, vous obtenez automatiquement HTTPS, au lieu de cet avertissement effrayant "Éléments non sécurisés sur cette page".

Mais pourquoi utiliser des URL relatives au protocole? Pourquoi ne pas simplement utiliser HTTPS toujours dans les URL de CDN? Après tout, une page HTTP n'a aucune raison de se plaindre si vous décidez de charger certaines de ses parties via HTTPS.

(Ceci concerne plus particulièrement les CDN; presque tous les CDN ont une capacité HTTPS. Alors que votre propre serveur peut ne pas nécessairement avoir HTTPS.)

21
oink

Depuis décembre 2014, Le blog de Paul Irish sur les URL relatives aux protocoles dit:

2014.12.17: Maintenant que SSL est encouragé pour tout le monde et ne pose pas de problèmes de performances, cette technique est désormais un anti-modèle. Si l'actif dont vous avez besoin est disponible sur SSL, always utilise l'actif https://.

Sauf si vous avez des problèmes de performances spécifiques (tels que le réseau mobile lent mentionné dans la réponse de Zakjan), vous devez utiliser https:// pour protéger vos utilisateurs.

33
Joe

À cause de la performance. L’établissement d’une connexion HTTPS prend beaucoup plus de temps que HTTP, la négociation TLS ajoute un délai de latence jusqu’à 2 RTT s. Vous pouvez le remarquer sur les réseaux mobiles. Il est donc préférable de ne pas utiliser d'URL d'actifs HTTPS, si vous n'en avez pas besoin.

7
zakjan

Une chose à noter, si vous utilisez upgrade-insecure-requests du CSP, vous pouvez utiliser en toute sécurité des URL sans protocole (//example.com).

0
Malvoz