3 votes

Safari insère "localhost" dans les URL comportant trois barres obliques après le schéma.

Safari semble être le seul navigateur qui traite différemment les URL comportant trois barres obliques après le schéma.

Par exemple, en tapant https:///google.com dans la barre d'adresse, l'URL est convertie en https://google.com par tous les navigateurs que j'ai essayés (Edge, Firefox, Opera, Tor), à l'exception de Safari, qui convertit l'URL en https://localhost/google.com.

La conversion se produit également lors de la réception d'une redirection HTTP (301 ou 302) avec une URL "malformée", mais ne se produit pas en cliquant sur un lien, dans ce cas Safari est cohérent avec les autres navigateurs.

Quelqu'un sait-il pourquoi ? Et qui a raison - l'insertion de Safari localhost ou les autres navigateurs qui suppriment la troisième barre oblique ?

5voto

yoliho Points 340

@AlvarPaalberg's réponse donne une vue antérieure

Il y a des RFCs ultérieurs qui, je pense, s'ajoutent à cela.

Celui que j'ai trouvé est RFC7230 définissant le protocole http. Cela comprend

Un expéditeur ne doit pas générer un URI "http" avec un identifiant d'hôte vide. vide. Un destinataire qui traite une telle référence URI DOIT la rejeter comme étant invalide.

Aussi RFC3986

Si le schéma URI définit une valeur par défaut pour l'hôte, cette valeur par défaut est la suivante s'applique lorsque le sous-composant host n'est pas défini ou lorsque le paramètre nom enregistré est vide (longueur zéro). Par exemple, le schéma URI "file "file" est défini de manière à ce qu'aucune autorité, un hôte vide, et et "localhost" signifient tous la machine de l'utilisateur final, alors que le schéma "http" considère considère qu'une autorité manquante ou un hôte vide ne sont pas valides.

A partir de là, je pense que tous les navigateurs sont incorrects. Ils devraient rejeter l'URL comme étant invalide. Les navigateurs en général n'ont jamais aimé rapporter des erreurs pour le html invalide ou autre chose, donc ils décident ce qu'ils pensent que l'utilisateur a tapé et l'utilisent à la place.

Safari a choisi un point de vue différent de celui des autres. (Il a utilisé la règle pour le schéma file : - ce qui, je suppose, est dû au fait que les développeurs de Safari sont plus intégrés avec les développeurs du système d'exploitation que ce n'est le cas pour les autres navigateurs. Les API du système MacOS utilisent les URL des fichiers pour la plupart des opérations sur les fichiers).

2voto

Kaiido Points 121

Ce qui se passe lorsque le texte est saisi dans la barre d'adresse du navigateur n'est encore lié à aucune spécification, de sorte qu'il n'y a pas de comportement "incorrect" ou "correct" pour cette situation.

Cependant, pour les redirections envoyées par le serveur en réponse à une demande de récupération, l'option Recherche de normes la règle, et ces normes (§8.2 - "suivre") demandez à que l'en-tête `Location` de la réponse soit analysé à travers les normes URL. Analyseur d'URL algorithme.

Cet algorithme quand il rencontrera le troisième / dans le autorité spéciale ignorer les barres obliques état émettra un erreur de validation mais ne laissera pas cette étape jusqu'à ce que toutes les étapes ultérieures / sont trouvés (et donc ignorés).

Donc le résultat de l'analyse d'une entrée telle que https:///////example.com devrait être

protocol: "https:"
host: "example.com"
path: "/"

I.E., les multiples / caractères après https: sont ignorés.

Et même Safari est d'accord sur ce point à d'autres endroits, comme dans le code HTML. <a href> comme on peut le voir sur les liens dans l'OP.

Le fait qu'ils ne respectent pas cette règle pour les redirections fetch est un bogue, et en tant que tel, vous pouvez le signaler à la direction de l'entreprise. Traqueur de bogues .

1voto

Ana Points 71

On peut essayer de donner une réponse à la question why? mais pas who is correct?


RFC 1738 - Localisateurs de ressources uniformes (URL) :

Le schéma de l'URL du fichier est utilisé pour désigner les fichiers accessibles sur un ordinateur hôte particulier. Ce schéma, contrairement à la plupart des autres schémas d'URL, ne désigne pas une ressource universellement accessible sur l'Internet. Internet.

L'URL d'un fichier prend la forme :

    file://<host>/<path>

/../ Dans un cas particulier, il peut s'agir de la chaîne "localhost". ou le vide vide ; ceci est interprété comme `la machine à partir de laquelle l'URL est est interprétée".


Il semble donc que Safari considère les trois barres obliques comme un cas spécial de schéma d'URL de fichier (chaîne vide) et remplace la chaîne vide entre la deuxième et la troisième barre oblique par 'localhost'. Les autres navigateurs considèrent que l'utilisateur a saisi une barre oblique de trop et qu'il veut en fait accéder à une ressource Internet, et ils la corrigent automatiquement.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X