2012-01-26 6 views
6

Sono in esecuzione in un limite rigido in Internet Explorer con protocolli di applicazione che superano 508 caratteri di lunghezza. Questo limite non viene applicata in altri browser, Chrome, ecc ...Qual è la lunghezza massima di un protocollo URL personalizzato utilizzando i protocolli sincroni collegabili in Internet Explorer?

La documentazione su MSDN (1) non sembra parlare la lunghezza massima consentita nella parte specifica-schema dell'URI o la lunghezza totale compreso schema.

508 caratteri è ben al di sotto dei limiti generali per gli url in IE riportati come 2083 caratteri (2).

Qualcuno sa se questo comportamento è previsto, sto usando IE8, o forse ho qualcosa di sbagliato qui?

Riferimenti:

risposta

3
508 + some bookkeeping = 512 bytes 

penso che il browser, previa spaccatura fuori dal protocollo, lo memorizza in un buffer temporaneo di un taglia unica. Perché, non lo so, e questo sembra un comportamento che potrebbe cambiare in futuro. Non incassare su di esso.

che sto anche chiedendo perché avresti bisogno di un protocollo di questo lungo. Anche un GUID ha solo 36 caratteri se espresso come cifre esadecimali più trattini.

4

ho recentemente imbattuto in questo stesso problema e venire con la seguente soluzione. Se si tenta di assegnare l'URL direttamente in questo modo:

document.location.href = theUrlWithTheCustomProtocol; 

vi imbatterete in questo errore limite di 508 caratteri e in IE8 si otterrà un errore JavaScript dire qualcosa in merito "area di dati passata a una chiamata di sistema è troppo piccolo."

Per ovviare a questo problema, sono passato dal codice qui sopra per utilizzando jQuery per creare un iframe nascosto in questo modo:

// Remove old frame 
$('#hiddenIFrame').remove(); 

// Add new one 
$('<iframe />', { 
    'id': 'hiddenIFrame', 
    'name': 'hiddenIFrame', 
    'src': theUrlWithTheCustomProtocol, 
    'style': 'display: none;' 
}).appendTo("body"); 

Questo aggira il limite di caratteri IE 508 utilizzando document.location.href e questo soluzione funziona per IE, FireFox, Chrome e Safari.

+0

Nel mio test, questo aumenta il limite di 2.046 caratteri in IE 9-11. (Curiosamente, sono 2.047 caratteri in IE 8.) È solo un aumento di 4x, ma può essere sufficiente in alcune situazioni. Grande scoperta –

Problemi correlati