Quelle est la longueur maximale d'une URL dans différents navigateurs?

4841

Quelle est la longueur maximale d'une URL dans différents navigateurs? Est-ce différent selon les navigateurs?

Le protocole HTTP le dicte-t-il?

Sander Versluys
la source
38
FWIW, pour les utilisateurs de Windows, les chemins de serveur dépassant 250 caractères peuvent provoquer des problèmes lors de la création d'URL, par exemple, voir HttpContext.Current.Server.MapPath échoue pour les noms de fichiers longs sur forums.asp.net . résultat inférieur: si une restriction ne vous obtient pas, une autre peut .
gerryLowry
21
De support.microsoft.com/kb/208427 "La longueur maximale de l'URL est de 2 083 caractères dans Internet Explorer"
gavenkoa
9
Puis-je vous demander pourquoi vous aviez besoin de savoir cela? C'est-à-dire quel est le cas d'utilisation pour avoir une URL longue?
o0 '.
17
@Lohoris: Si un formulaire utilise getplutôt que post, le signet de la page atteinte par le formulaire rempli capturera les informations saisies. Dans certains cas, cela peut être mauvais, mais dans d'autres cas, cela peut être utile. Pour que cela fonctionne, cependant, le navigateur doit être capable de gérer une URL contenant toutes les informations.
supercat
4
@Lohoris Lorsque nous écrivons des pages pour générer des rapports, nous utilisons un formulaire de critères. Il est utile sur certains rapports de pouvoir envoyer l'URL à quelqu'un avec les critères intégrés. Selon le rapport, nous sommes parfois obligés d'utiliser postou les critères sont tronqués. Juste un autre cas d'utilisation.
buzzsawddog

Réponses:

4957

Réponse courte - limite de facto de 2000 caractères

Si vous conservez les URL sous 2 000 caractères, elles fonctionneront dans pratiquement toutes les combinaisons de logiciels client et serveur.

Si vous ciblez des navigateurs particuliers, voir ci-dessous pour plus de détails sur les limites spécifiques.

Réponse plus longue - d'abord, les normes ...

RFC 2616 (Hypertext Transfer Protocol HTTP / 1.1) section 3.2.1 dit

Le protocole HTTP ne place aucune limite a priori sur la longueur d'un URI. Les serveurs DOIVENT être capables de gérer l'URI de toute ressource qu'ils servent, et DEVRAIENT être capables de gérer des URI de longueur illimitée s'ils fournissent des formulaires basés sur GET qui pourraient générer de tels URI. Un serveur DEVRAIT retourner le statut 414 (Request-URI Too Long) si un URI est plus long que ce que le serveur peut gérer (voir la section 10.4.15).

Ce RFC a été obsolète par le RFC7230 qui est une actualisation de la spécification HTTP / 1.1. Il contient un langage similaire, mais suggère également ceci:

On trouve en pratique diverses limitations ad hoc sur la longueur de la ligne de demande. Il est RECOMMANDÉ que tous les expéditeurs et destinataires HTTP prennent en charge, au minimum, des longueurs de ligne de demande de 8000 octets.

... et la réalité

C'est ce que disent les normes . Pour la réalité , il y avait un article sur boutell.com (lien vers la sauvegarde Internet Archive) qui a discuté de ce que les implémentations de navigateur et de serveur prendront en charge. Le résumé est:

Les URL extrêmement longues sont généralement une erreur. Les URL de plus de 2 000 caractères ne fonctionneront pas dans les navigateurs Web les plus populaires. Ne les utilisez pas si vous prévoyez que votre site fonctionnera pour la majorité des internautes.

(Remarque: il s'agit d'une citation d'un article écrit en 2006 , mais en 2015, l'utilisation décroissante d'IE signifie que les URL plus longues ne le travail pour la majorité Cependant, IE a encore la limitation ....)

Limitations d'Internet Explorer ...

La longueur maximale d'URL d'IE8 est de 2083 caractères , et il semble qu'IE9 ait une limite similaire .

J'ai testé IE10 et la barre d'adresse n'acceptera que 2083 caractères. Vous pouvez cliquer une URL plus longue que celle-ci, mais la barre d'adresse n'affichera que 2083 caractères de ce lien.

Il y a une belle rédaction sur le blog IE Internals qui qui se passe.

Il existe des rapports mitigés sur IE11 prenant en charge des URL plus longues - voir les commentaires ci-dessous. Étant donné que certaines personnes signalent des problèmes, l'avis général reste valable.

Les moteurs de recherche comme les URL <2048 caractères ...

Sachez que le protocole Sitemaps , qui permet à un site d'informer les moteurs de recherche sur les pages disponibles, a une limite de 2048 caractères dans une URL. Si vous avez l'intention d'utiliser des sitemaps, une limite a été fixée pour vous! (voir la réponse de Calin-Andrei Burloiu ci-dessous)

Il y a aussi des recherches de 2010 sur la longueur maximale des URL que les moteurs de recherche exploreront et indexeront . Ils ont trouvé que la limite était de 2047 caractères, ce qui semble allié aux spécifications du protocole de plan du site. Cependant, ils ont également constaté que l' outil Google SERP ne gérerait pas les URL de plus de 1855 caractères.

Les CDN ont des limites

Les CDN imposent également des limites sur la longueur de l'URI et renvoient un 414 Too long requestlorsque ces limites sont atteintes, par exemple:

(crédit à timrs2998 pour avoir fourni cette information dans les commentaires)

Aperçu du navigateur supplémentaire

J'ai testé ce qui suit contre un serveur Apache 2.4 configuré avec un très grand LimitRequestLine et LimitRequestFieldSize .

Browser     Address bar   document.location
                          or anchor tag
------------------------------------------
Chrome          32779           >64k
Android          8192           >64k
Firefox          >64k           >64k
Safari           >64k           >64k
IE11             2047           5120
Edge 16          2047          10240

Voir aussi cette réponse de Matas Vaitkevicius ci-dessous.

Ces informations sont-elles à jour?

C'est une question populaire, et comme la recherche originale a environ 12 ans, je vais essayer de la garder à jour: à partir de janvier 2020 , le conseil est toujours valable. Même si IE11 peut éventuellement accepter des URL plus longues, l'omniprésence des anciennes installations IE ainsi que les limitations des moteurs de recherche signifient que le maintien de moins de 2000 caractères est la meilleure politique générale.

Paul Dixon
la source
83
Notez qu'IE11 ne marquera pas les URL de plus de 260 caractères . Je ne sais pas si Edge a la même limitation.
Brian
10
Aujourd'hui, IE11 réduit mon URL à 2048 caractères.
AntiCZ
2
Question d'origine: "Quelle est la longueur maximale d'une URL dans différents navigateurs ". Cela ne répond pas à la question, cela ne donne que pour IE. Les gens créent des sites Web à des fins différentes, par exemple des outils internes qui ne seront JAMAIS accessibles par IE.
Skeets
13
dans Chrome en 2016, j'ai pu ouvrir une URL avec 260300 caractères ascii en utilisant la commande osx open à partir d'un script simple, et j'ai pu confirmer que tous les caractères ont été transmis au serveur. L'URL dans le navigateur est tronquée à 32791 caractères, se terminant par ... (% E2% 80% A6% E2% 80% A6)
Rob Dawson
22
@Paul Dixon C'est vraiment agréable de voir des gens qui sont prêts à aller au-delà pour répondre aux questions sur ce site. De toute évidence, les gens montrent leur gratitude avec le nombre actuel de votes positifs de 3734, mais je voulais dire merci! :)
drognisep
170

Les URL les plus longues que j'ai rencontrées sont des URL de données

Exemple d'URL d'image à partir des résultats d'image Google (11747 caractères)

data:image/jpeg;base64,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
CyberJunkie
la source
36
Il parle du fait qu'un jpeg encodé en base64 est techniquement une URL, car il est spécifié en tant que données: *. Bien qu'il ait raison de dire que c'est une URL valide, je ne pense pas que ce soit la question qui se posait.
Fitblip
54
... ou collez-le simplement dans votre barre d'adresse.
Gras Double
108
Il s'agit d'un URI et non d'une URL.
mike jones
65
Parce qu'une URL de données contient le protocole "data:" et l'identifiant, c'est tout ce dont vous avez besoin pour LOCALISER ce "fichier" (même si le "Filesystem" est l'espace de tous les fichiers possibles). Il s'agit donc d'une URL, qui est également une URI. (Mais certainement pas "pas une URL")
MickLH
5
@DoubleGras Google Chrome pour Mac ne me permet pas de coller une URL aussi longue dans ma barre d'adresse
Max Nanasy
157

FAQ WWW: Quelle est la longueur maximale d'une URL? a sa propre réponse basée sur des tests et des recherches empiriques. La réponse courte est que dépasser 2048 caractères rend Internet Explorer mécontent et c'est donc la limite que vous devez utiliser. Voir la page pour une réponse longue.

Brian
la source
153

J'ai écrit ce test qui continue à s'ajouter 'a'au paramètre jusqu'à ce que le navigateur échoue

Partie C #:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult ParamTest(string x)
{
    ViewBag.TestLength = 0;
    if (!string.IsNullOrEmpty(x))
    {
        System.IO.File.WriteAllLines("c:/result.txt",
                       new[] {Request.UserAgent, x.Length.ToString()});
        ViewBag.TestLength = x.Length + 1;
    }

    return View();
}

Vue:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script type="text/javascript">
    $(function() {
        var text = "a";
        for (var i = 0; i < parseInt(@ViewBag.TestLength)-1; i++) {
            text += "a";
        }

        document.location.href = "http://localhost:50766/Home/ParamTest?x=" + text;
    });
</script>

PARTIE 1

Sur Chrome, j'ai eu:

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36
2046

Il a ensuite explosé avec:

Erreur HTTP 404.15 - Introuvable Le module de filtrage des demandes est configuré pour refuser une demande dont la chaîne de requête est trop longue.

Idem sur Internet Explorer 8 et Firefox

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
2046

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
2046

PARTIE 2

Je suis allé en mode facile et j'ai ajouté des limites supplémentaires à IISExpress applicationhost.config et aux web.configparamètres maxQueryStringLength="32768".

Chrome failed with message 'Bad Request - Request Too Long

HTTP Error 400. The size of the request headers is too long.

après 7744 caractères.

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36
7744

PARTIE 3

Ajoutée

<headerLimits>
    <add header="Content-type" sizeLimit="32768" />
</headerLimits>

ce qui n'a pas aidé du tout. J'ai finalement décidé d'utiliser fiddler pour supprimer le référent de l'en-tête.

static function OnBeforeRequest(oSession: Session) {
    if (oSession.url.Contains("localhost:50766")) {
        oSession.RequestHeaders.Remove("Referer");
    }

Ce qui a bien fonctionné.

Chrome: obtenu à 15613 caractères. (Je suppose que c'est une limite de 16K pour IIS)

Et cela a encore échoué avec:

<BODY><h2>Bad Request - Request Too Long</h2>
<hr><p>HTTP Error 400. The size of the request headers is too long.</p>


Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36
15613

Firefox:

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
15708

Internet Explorer 8 a échoué avec un crash iexplore.exe.

Entrez la description de l'image ici

Après 2505

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
2505

Émulateur Android

Mozilla/5.0 (Linux; Android 5.1; Android SDK built for x86 Build/LKY45) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36
7377

Internet Explorer 11

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
4043

Internet Explorer 10

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
4043

Internet Explorer 9

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
4043
Matas Vaitkevicius
la source
Donc, en fait, mon hypothèse de 512 caractères est largement fausse ^ _ ^ Merci pour le test. Je ne me soucierai plus de la longueur des paramètres de requête ..
Gogol
17
Cela devrait être la réponse acceptée ... le premier ne fournit pas de limites strictes pour chaque navigateur, ce que demandent les questions.
GrayedFox
1
Cela vaut peut-être aussi la peine d'examiner Safari. Safari est le seul navigateur qui ne prend pas en charge les téléchargements générés par le client. Les solutions de contournement sont les suivantes: a) ouvrir un URI BLOB (un URI court et temporaire qui pointe vers un blob en mémoire) dans une nouvelle fenêtre, b) ouvrir un URI de données codées en base 64 dans une nouvelle fenêtre (peut être très longue, mais prend en charge la saisie MIME). Détails ici: github.com/eligrey/FileSaver.js/issues/12
Mat Gessel
@Vaitkevicius savez-vous si un espace (% 20) est compté comme un caractère ou 3?
Jun711
1
@Jun dépend où ... appuyez sur F12 et collez le suivi dans la console console.log("%20".length +" "+decodeURI("%20").length)cela devrait l'expliquer
Matas Vaitkevicius
96

Il n'y a vraiment aucune longueur d'URL maximale universelle. La longueur maximale est déterminée uniquement par ce que le navigateur client choisit de prendre en charge, qui varie considérablement. La limite de 2 083 n'est présente que dans Internet Explorer (toutes les versions jusqu'à 7.0). La longueur maximale dans Firefox et Safari semble être illimitée, bien que l'instabilité se produise avec des URL atteignant environ 65 000 caractères. Opera ne semble avoir aucune longueur d'URL maximale et ne souffre pas d'instabilité à des longueurs extrêmement longues.

stratégies de marketing web provi
la source
8
Si l'instabilité est d'environ 65k, elle se situe probablement juste à côté de 65535 (2 ^ 16 - 1). Peut-être qu'ils parcourent les caractères en utilisant un i court? Juste une pensée. Je me demande quelle URL ils ont testé pour 65k + o_o ;;
Garet Claborn
5
Cette réponse est peut-être celle qui devrait être acceptée, car elle fournit des réponses concrètes: 2k pour IE, 65k pour Safari / Firefox, "plus" pour Opera.
eis
Je suis curieux. L'URL 65k est-elle une URI de schéma de données ou vraiment une URL au sens classique?
SaAtomic
81

Sur les plates-formes Apple (iOS / macOS / tvOS / watchOS), la limite peut être un schéma d'URL de 2 Go , comme le montre ce commentaire dans le code source de Swift :

// Make sure the URL string isn't too long.
// We're limiting it to 2GB for backwards compatibility with 32-bit executables using NS/CFURL
if ( (urlStringLength > 0) && (urlStringLength <= INT_MAX) )
{
...

Sur iOS, j'ai testé et confirmé que même une URL longue de plus de 300 Mo est acceptée. Vous pouvez essayer une URL aussi longue comme celle-ci dans Objective-C:

NSString *path = [@"a:" stringByPaddingToLength:314572800 withString:@"a" startingAtIndex:0];
NSString *js = [NSString stringWithFormat:@"window.location.href = \"%@\";", path];
[self.webView stringByEvaluatingJavaScriptFromString:js];

Et attrapez s'il réussit avec:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSLog(@"length: %@", @(request.URL.absoluteString.length));
    return YES;
}
Cœur
la source
74
Vous méritez un +1 juste pour l'effort d'essayer une URL de 300 Mo
Дамян Станчев
3
iOS n'est pas un navigateur en soi. Était-ce dans Safari pour iOS?
Randall
6
Les schémas @Randall sont gérés par le système d'exploitation, puis envoyés à l'application qui peut les ouvrir. Ainsi, toutes les applications sur iOS, y compris Safari, peuvent gérer un URI long.
Cœur
1
Merci pour la clarification. Vraisemblablement, cependant, cela n'empêche pas une application arbitraire (par exemple, un navigateur alimenté par Tor) d'introduire sa propre restriction de longueur, n'est-ce pas?
Randall
1
@Randall correct mais pourquoi quelqu'un ferait-il ça ...
Xander
70

Le RFC URI (dont les URL sont un sous-ensemble) ne définit pas une longueur maximale, mais il recommande que la partie du nom d'hôte de l'URI (le cas échéant) ne dépasse pas 255 caractères:

Les producteurs d'URI doivent utiliser des noms conformes à la syntaxe DNS, même lorsque l'utilisation de DNS n'est pas immédiatement apparente, et doivent limiter ces noms à 255 caractères au maximum.

Comme indiqué dans d'autres articles, certains navigateurs ont une limitation pratique de la longueur d'une URL.

casperOne
la source
55

La spécification HTTP 1.1 dit:

Les URI en HTTP peuvent être représentés sous forme absolue ou par rapport à certains
URI de base connus [11], selon le contexte de leur utilisation. Les deux
formes sont différenciées par le fait que les URI absolus commencent toujours
par un nom de schéma suivi de deux points. Pour des informations définitives sur la
syntaxe et la sémantique des URL, voir «Uniform Resource Identifiers (URI): Generic Syntax and Semantics», RFC 2396 [42] (qui remplace les RFC 1738 [4] et RFC 1808 [11]). Cette spécification adopte les définitions de "référence URI
", "URL absolue", "URL relative", "port", "hôte", "chemin_abs", "chemin_rel" et "autorité" de cette
spécification.

Le protocole HTTP ne place aucune limite a priori sur la longueur d'
un URI. Les serveurs DOIVENT être capables de gérer l'URI de toute ressource qu'ils servent, et DEVRAIENT être capables de gérer des URI de longueur illimitée s'ils fournissent des formulaires basés sur GET qui pourraient générer de tels URI. *
Un serveur DEVRAIT retourner 414 (Request-URI Too Long) état si un URI est plus long que le serveur ne peut le gérer (voir la section 10.4.15).

Remarque: Les serveurs doivent être prudents quant à la longueur d'URI supérieure à 255 octets, car certaines implémentations client ou proxy plus anciennes peuvent ne pas prendre correctement en charge ces longueurs.

Comme mentionné par @Brian, les clients HTTP (par exemple les navigateurs) peuvent avoir leurs propres limites, et les serveurs HTTP auront des limites différentes.

Greg
la source
47

Le support Microsoft indique que "la longueur maximale de l'URL est de 2 083 caractères dans Internet Explorer".

IE a des problèmes avec des URL plus longues que cela. Firefox semble bien fonctionner avec> 4k caractères.

MegaTux
la source
39

Dans l' URL comme le recommande l' UI Jakob Nielsen:

l'interface sociale du Web repose sur le courrier électronique lorsque les utilisateurs souhaitent se recommander des pages Web, et le courrier électronique est le deuxième moyen le plus utilisé pour accéder aux nouveaux sites (les moteurs de recherche étant les plus courants): assurez-vous que toutes les URL de votre Les sites comportent moins de 78 caractères afin de ne pas passer à la ligne.

Ce n'est pas le maximum mais je considérerais cela comme un maximum pratique si vous voulez que votre URL soit partagée.

Paul Morgan
la source
3
Je me demande d'où vient "78"? Peut-être que cet article original de 1999 a été écrit en supposant que les gens lisent leurs e-mails dans des fenêtres de terminal 80x24? Encore de bons conseils!
Jon Schneider
3
Bien. Les cartes perforées IBM comportaient également 80 colonnes. Avec deux personnages repris par un retour chariot et un saut de ligne, vous obtenez 78.
Paul Morgan
1
Haha. :-) J'envisageais de faire référence à des moniteurs CGA 80x25 de l'ère 1981 dans mon commentaire, mais vous êtes allé encore plus loin! ... Je n'étais pas là à l'époque des cartes perforées, mais étaient-ils de 80 octets de diamètre, ou seulement 80 bits?
Jon Schneider
1
Pas exactement un octet (8 bits). Il codait un caractère dans chaque colonne.
Paul Morgan
3
@JonSchneider - 78 est assez spécifique et peut se rapporter à la lisibilité du texte (du point de vue de l'utilisabilité compte tenu du contexte de Nielsen), qui se situe au mieux entre 50-60 et un maximum de 75 .
Jay Rainey
36

Le protocole Sitemaps , qui est un moyen pour les webmasters d'informer les moteurs de recherche sur les pages de leurs sites (également utilisé par Google dans les outils pour les webmasters), prend en charge les URL de moins de 2048 caractères. Donc, si vous prévoyez d'utiliser cette fonctionnalité pour l'optimisation des moteurs de recherche, tenez-en compte.

Calin-Andrei Burloiu
la source
C'est un peu déroutant. Les protocoles de sitemap "prennent en charge les URL de moins de 2 048 caractères". J'ai imaginé qu'un site comme example.com fonctionnerait. Je pense que cette question concerne plus le maximum?
HoldOffHunger
19

ASP.NET 2 et SQL Server Reporting Services 2005 ont une limite de 2028. J'ai trouvé cela difficile, où mon générateur d'URL dynamique ne transmettrait pas certains paramètres à un rapport au-delà de ce point. C'était sous Internet Explorer 8.

Fandango68
la source
18

Pourquoi la limite d'Internet Explorer n'est-elle que de 2 Ko alors qu'IIS a une limite de 16 Ko? Je ne pense pas que cela ait du sens.

Je veux donc commencer une expérience sur les limites de taille d'URL de demande Ajax.

J'ai défini le maxHttpHeaderSize = "1048576" de mon connecteur HTTP Tomcat. Et préparé une URL très longue.

Ensuite, j'envoie une demande avec l'URL longue comme celle-ci:

var url="/ajax/url-length.jsp";
jQuery.ajax(url,{data:{q:"0".repeat(1048000-url.length-4)}});

Rapports jQuery effectués. Tomcat signale que l'URL demandée est de 1048015 octets. Il a été testé avec Chrome 50 et Internet Explorer 11.

Ainsi, les navigateurs Web ne tronqueront pas ou ne limiteront pas votre URL intentionnellement lors de l'envoi de demandes Ajax.

Fuweichin
la source
4
La variation entre Internet Explorer et IIS est logique lorsque vous considérez que toutes les demandes à un serveur Web ne sont pas effectuées via un navigateur.
TroySteven
15

La directive Limit Request Line définit la longueur maximale d'une URL. Par défaut, il est réglé sur 8190, ce qui vous donne beaucoup de place. Cependant, d'autres serveurs et certains navigateurs limitent davantage la longueur.

Parce que tous les paramètres sont passés sur la ligne URL, les éléments qui étaient dans le mot de passe des champs cachés seront également affichés dans l'URL bien sûr. Aucun des deux mobiles ne doit être utilisé pour de vraies mesures de sécurité et doit au mieux être considéré comme une sécurité esthétique.

webslatesoftware
la source
11

J'ai de l'expérience avec SharePoint 2007, 2010 et il y a une limite de longueur URL que vous pouvez créer du côté serveur dans ce cas SharePoint, donc cela dépend principalement de 1) le client (navigateur, version et OS) et 2) la technologie serveur, IIS, Apache, etc.

Leonidas Menendez
la source
1
Étant donné que SharePoint expose les URL Web comme chemins de fichier, il se heurte à une limitation distincte: la limite de longueur de chemin de fichier Windows de 260 caractères (ou 248 caractères lors de l'utilisation d'une API). Pour plus de détails sur cette limite, consultez la section "Limitation de longueur de chemin maximale" ici: msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx
Thriggle
10

Il semble que Chrome ait au moins relevé cette limite. J'ai collé 20 000 caractères dans le bookmarklet et il l'a pris.

wibberding
la source
1

Selon la spécification HTTP, il n'y a pas de limite à la longueur d'une URL. Gardez vos URL sous 2048 caractères; cela garantira que les URL fonctionnent dans toutes les configurations de clients et de serveurs. De plus, les moteurs de recherche comme les URL doivent rester sous environ 2 000 caractères.

Anoop Gupta
la source