Une URL est-elle http://example.com/foo?bar
valide?
Je cherche un lien vers quelque chose d'officiel qui dit d'une manière ou d'une autre. Une simple réponse oui / non ou des preuves anecdotiques ne suffiront pas.
url
query-parameters
Conley Owens
la source
la source
Réponses:
La RFC URI n'impose pas de format pour la chaîne de requête. Bien qu'il soit reconnu que la chaîne de requête portera souvent des paires nom-valeur, ce n'est pas obligatoire (par exemple, elle contiendra souvent un autre URI).
HTML établit qu'un formulaire soumis via HTTP GET doit encoder les valeurs du formulaire sous la forme de paires nom-valeur sous la forme "? Key1 = value1 & key2 = value2 ..." (correctement encodées). L'analyse de la chaîne de requête dépend du code côté serveur (par exemple, le moteur de servlet Java).
Vous n'identifiez pas quel framework côté serveur vous utilisez, le cas échéant, mais il est possible que votre framework côté serveur puisse supposer que la chaîne de requête sera toujours dans des paires nom-valeur et il peut s'étouffer avec une chaîne de requête qui ne l'est pas dans ce format (par exemple
?bar
). S'il s'agit de votre propre code personnalisé analysant la chaîne de requête, vous devez simplement vous assurer de gérer ce format de chaîne de requête. S'il s'agit d'un framework, vous devrez consulter votre documentation ou simplement le tester pour voir comment il est géré.la source
isindex
magiename
de HTML5 permet d'envoyer une chaîne de requête sans format clé-valeur stackoverflow.com/a/37579004/895245Ils sont parfaitement valables. Vous pourriez les considérer comme l'équivalent du grand type musclé se tenant silencieusement derrière le messager de la foule. Le gars n'a pas de nom et ne parle pas, mais sa simple présence transmet des informations.
la source
"Le schéma" http "est utilisé pour localiser les ressources réseau via le protocole HTTP. Cette section définit la syntaxe et la sémantique spécifiques au schéma pour les URL http." http://www.w3.org/Protocols/rfc2616/rfc2616.html
Alors oui, tout est valide après un point d'interrogation. Votre serveur peut interpréter différemment, mais de manière anecdotique , vous pouvez voir que certaines langues traitent cela comme une valeur booléenne qui est vraie si elle est répertoriée.
la source
Oui, c'est valable.
Si l'on veut simplement vérifier si le paramètre existe ou non, c'est une façon de le faire.
la source
Spécification URI
La seule partie pertinente de la spécification URI est de tout savoir entre le premier
?
et le premier qui#
correspond à la définition d'une requête de la spécification. Il peut inclure des caractères tels que[:/.?]
. Cela signifie qu'une chaîne de requête telle que?bar
ou?ten+green+apples
est valide.Trouvez la RFC 3986 ici
Spécification HTML
isindex
n'est pas vraiment HTML5.Il est fourni obsolète pour être utilisé comme premier élément d'un formulaire uniquement et se soumet sans nom.
La dernière prise en charge d'isindex était HTML3 . Son utilisation en HTML5 est de fournir une compatibilité ascendante plus facile.
Support dans les bibliothèques
La prise en charge dans les bibliothèques de ce format d'URI varie, mais certaines bibliothèques fournissent une prise en charge héritée pour faciliter l'utilisation de
isindex
.Perl URI.pm (support spécial)
Certaines bibliothèques comme l'URI de Perl fournissent des méthodes d'analyse de ce type de structures
Node.js
url
(pas de support spécial)Comme autre exemple beaucoup plus fréquent,
node.js
prend la route normale et facilite l'analyse en tant queparseQueryString
)La plupart des autres API d'analyse d'URI suivent quelque chose de similaire.
parse_url
, suit une implémentation similaire mais ne renvoie que la chaîne de la requête. Analyse dans un objet dek=>v
requiertparse_string()
la source
Il est valide: voir Wikipedia , RFC 1738 (3.3. HTTP) , RFC 3986 (3. Composants de syntaxe) .
la source
isindex
magie obsolètename
de HTML5Cette fonctionnalité obsolète permet à une soumission de formulaire de générer une telle URL, fournissant une preuve supplémentaire qu'elle est valide pour HTML. Par exemple:
génère une URL de type:
Standard: https://www.w3.org/TR/html5/forms.html#naming-form-controls:-the-name-attribute
isindex
est cependant obsolète comme mentionné à l' adresse : https://stackoverflow.com/a/41689431/895245la source
Comme toutes les autres réponses décrites, il est parfaitement valide pour la vérification, spécialement pour les trucs de type booléen
Voici une fonction simple pour obtenir la chaîne de requête par nom:
et maintenant vous voulez vérifier si la chaîne de requête que vous recherchez existe ou non, vous pouvez faire une chose simple comme:
le
exampleQueryString
serafalse
si la fonction ne trouve pas la chaîne de requête, sinon le seratrue
.la source