Quelle est la durée maximale d'une chaîne de requête?

Est un navigateur à charge? Aussi, différents web piles ont des limites sur la quantité de données qu'ils peuvent obtenir à partir de la demande?

458
demandé sur mavis 2009-05-01 23:44:15

4 réponses

RFC 2616 (Hypertext Transfer Protocol - HTTP/1.1) indique qu'il n'y a pas de limite à la longueur d'une chaîne de requête (section 3.2.1). RFC 3986 indique également qu'il n'y a pas de limite, mais indique que le nom d'hôte est limité à 255 caractères en raison des limitations DNS (section 2.3.3).

bien que les spécifications ne précisent pas de longueur maximale, des limites pratiques sont imposées par le navigateur web et le logiciel serveur. Basé sur le recherche trouvée à Boutell.com :

  • Microsoft Internet Explorer (Browser)

    Microsoft déclare que la longueur maximale d'une URL dans Internet Explorer est de 2 083 caractères, avec un maximum de 2 048 caractères dans la partie chemin de l'URL. Les tentatives d'utiliser des URL plus longues ont produit un message d'erreur clair dans Internet Explorer.

  • Microsoft Edge (Browser)

    La limite semble être d'environ 81578 caractères. Voir limitation de longueur D'URL de Microsoft Edge

  • Chrome

    Il arrête en affichant L'URL après 64k caractères, mais peut servir plus de 100k caractères. Aucun autre essai a été fait au-delà.

  • De Firefox (Navigateur)

    Après 65 536 caractères, la barre d'emplacement n'affiche plus L'URL dans Windows Firefox 1.5.x. Cependant, des URLs plus longues fonctionneront. Aucun autre test n'a été effectué après 100 000 caractères.

  • Safari (Navigateur)

    Au moins 80 000 caractères fonctionneront. Les tests n'étaient pas essayé au-delà de cela.

  • Opera (Navigateur)

    Au moins 190 000 caractères fonctionneront. J'ai arrêté les tests après 190 000 caractères. Opera 9 Pour Windows a continué à afficher un, URL copiable et pastéable dans la barre d'adresse, même à 190 000 caractères.

  • Apache (Serveur)

    Les premières tentatives de mesurer la longueur d'URL maximale dans les navigateurs web est entré dans une limite de longueur d'URL du serveur d'environ 4 000 caractères, après quoi Apache produit une erreur "413 Entity Too Large". La version actuelle D'Apache trouvée dans Red Hat Enterprise Linux 4 a été utilisée. La documentation officielle D'Apache ne mentionne qu'une limite de 8 192 octets sur un champ individuel d'une requête.

  • Microsoft Internet Information Server (Server)

    La limite par défaut est de 16 384 caractères (oui, le serveur Web de Microsoft accepte des URL plus longues que le navigateur Web de Microsoft). Ce qui est configurable.

  • Perl HTTP::Daemon (Server)

    Jusqu'à 8 000 octets fonctionneront. Ceux qui construisent des serveurs d'applications web avec Perl's HTTP::Daemon module rencontrera une limite de 16.384 octets sur la taille combinée de tous les en-têtes de requête HTTP. Cela n'inclut pas les données du formulaire POST-méthode, les téléchargements de fichiers, etc. mais il n'inclure l'URL. En pratique, il en résultait une erreur 413 lorsqu'une URL était nettement plus longue que 8 000 caractères. Cette limitation peut être facilement enlevé. Cherchez toutes les occurrences de 16x1024 dans le démon.et les remplacer par une valeur plus importante. Bien sûr, cela augmente votre exposition aux attaques par déni de service.

855
répondu Robert Cartaino 2017-05-23 12:34:45

je suppose que vous voulez dire la longueur maximale pour une chaîne d'uri. Ce peut aider.

typiquement une fois que les URI deviennent illisibles parce qu'ils sont trop longs, il est temps d'utiliser une requête POST à la place.

8
répondu Snazzer 2009-05-01 19:47:03

différentes piles Web prennent en charge différentes longueurs de requêtes http. Je sais par expérience que les premières piles de Safari ne supportaient que 4000 caractères et avaient donc de la difficulté à les manipuler. ASP.net pages à cause de L'état utilisateur. C'est même pour POST, donc vous devriez vérifier le navigateur et voir ce que la limite de pile est. Je pense que vous pouvez atteindre une limite, même sur les nouveaux navigateurs. Je ne me souviens pas mais l'un d'eux (IE6, je pense) avait une limite de 16 bits, 32 768 ou quelque chose.

1
répondu kdevine 2009-05-01 19:52:11

bien qu'officiellement il n'y ait pas de limite, de nombreuses recommandations de configuration de sécurité indiquent que maxQueryStrings sur un serveur devrait être réglé à une limite de caractères maximale de 1024 tandis que l'url entière incluant la chaîne de requête devrait être réglée à un maximum de 2048 caractères. Il s'agit de prévenir la vulnérabilité de requête HTTP lente sur un serveur web afin d'empêcher les attaques DDOS lentes.

1
répondu matwonk 2018-01-12 16:37:00