taille Combien de temps une URL peut-elle prendre sur Internet Explorer 9?




taille balise title 2018 (3)

Les anciennes versions d'Internet Explorer étaient associées à des adresses Web de plus de 2 083 caractères (voir http://support.microsoft.com/kb/208427 ). Pendant ce temps, Firefox, Opera et Safari peuvent gérer au moins 80 000 utilisateurs.

La version 9 apporte de nombreuses améliorations. La longueur de l'URL est-elle l'une d'entre elles?


Je reçois 5120 caractères dans une URL pour Internet Explorer 9.

En aucun cas un test définitif mais ce qui suit illustre une vérification rapide de la longueur de l'url d'un attribut href dans une balise d'ancrage.

<html>
    <head>
        <script type="text/javascript">
            function init() {
                var anchor = document.getElementById('anc');
                var valid = true;
                var url = 'http://google.com/?search=';
                var count = url.length;

                while(valid) {
                    url = url + '1';
                    anchor.href = url;
                    count++;
                    valid = anchor.href == url;

                    if(count > 100000) {
                        alert('Test reached 100,000, stopping...');
                        valid = false;
                    }
                }
                alert('Complete, count = ' + count);
            }
        </script>
    </head>
    <body onload="init()">
        <a id="anc" href="http://google.com/">Test</a>
    </body>
</html>

Pas la réponse la plus précise, mais il ressemble à 2083 caractères dans la barre d'adresse et 5165 caractères à la suite d'un lien.

(Non officiel en aucune façon, il suffit de brancher une URL avec 41 000 caractères dans un fichier de test HTM et d’utiliser Javascript pour interroger la longueur de l’URL.)

Mettre à jour:

Pour reproduire le test, créez un fichier HTML avec un élément d'ancrage dont l'attribut HREF comporte 6 000 caractères. Ouvrez le fichier dans votre navigateur et cliquez sur le lien. Ouvrez ensuite la console et vérifiez window.location.href.length .

Suite à cette procédure dans IE9 aujourd'hui, il indique la longueur en 5165 caractères. Si je charge la même URL manuellement dans la barre d’adresse, elle indique 2083 caractères.

Pour ce que cela vaut, IE semble tronquer l'URL avant d'envoyer la requête. Si je mets une URL de 24 000 caractères dans l'attribut HREF de l'ancre, IE suivra le lien, mais la page qui en résulte indique une longueur d'URL de 5 165 caractères. Suivre le même lien dans Chrome entraîne une réponse HTTP 414 de mon serveur de test.


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

C # partie:

[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>

J'ai ajouté des limites supplémentaires à IISExpress applicationhost.config et web.config définissant maxQueryStringLength="32768" .

Aussi Added à config

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

ce qui n'a pas aidé du tout, Finalement décidé d'utiliser fiddler pour supprimer referer de l'en-tête.

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

Ce qui a bien fait.

Sur IE9 j'ai eu

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
4043




internet-explorer-9