2012-05-03 13 views
9

SFONDOdiversi comportamenti di trattare (backslash) nell'URL per Firefox e Chrome

Secondo la mia esperienza, quando mia workstation ubuntu è configurato sul dominio con Active Directory, il nome utente creato per me era secondo il seguente schema.

nome_dominio \ nome_utente

Utilizzando la UserDir estensioni di Apache su Linux richiederà di utilizzare il nome utente nell'URL per accedere public_html nella home directory.

http://localhost/~domain_name\user_name

PROBLEMA A:

Chrome converte tutto il backslash '\' caratteri nell'URL per inoltrare barra '/' e l'URL risultante diventa come sotto questo è totalmente diverso e risulta sempre non trovato.

http://localhost/~domain_name/user_name

Firefox altra parte non riconvertire barra di inoltrare barra richiesta in modo http a bersaglio è servito da server web.

Common solution is to encode back slash in %5C. 

PROBLEMA B:

Se usiamo un percorso simile (contenente \ nel percorso) in CSS @import costrutto, il processo di importazione dei file css come richiesta HTTP GET è fallito segnalando Errore 404 e l'URL riportato nell'errore 404 manca la presenza di \ del tutto. Significa che lo \ viene rimosso dall'URL prima di richiamare la richiesta GET contro di esso.

Questo comportamento è comune in Firefox e Chrome. Ma hanno soluzioni insolite

Firefox ha bisogno di tornare indietro barra per lavorare nel processo di importazione css.

url @import ("http://localhost/~domain_name\\user_name/path/to/css");

Chrome, come al solito, ha bisogno di una soluzione per la barra posteriore codificata.

url @import ("http://localhost/~domain_name%5Cuser_name/path/to/css");

  • Qual è le soluzioni unificate per affrontare \ in URL?
  • C'è un modo per evitare che un \ venga visualizzato nel nome utente?

risposta

7

La soluzione unificata per gestire il backslash in un URL è utilizzare% 5C. RFC 2396 non consentiva affatto quel carattere negli URL (quindi qualsiasi comportamento relativo a quel personaggio era solo un comportamento di ripristino degli errori). RFC 3986 lo consente, ma non è ampiamente implementato, anche perché non è esattamente compatibile con i processori URL esistenti.

Chrome, in particolare, fa la stessa cosa di IE: si presuppone che si intenda una barra diretta ogni volta che si digita una barra rovesciata, come hai scoperto, perché è quello che fanno i percorsi dei file di Windows.

+0

Ma non funzionerà nel caso css @import url() per Firefox. –

+0

Perché no? Dovrei lavorare per quanto posso dire. –

+0

Ma l'ho provato. –

3

Prova ad usare il componente aggiuntivo Slashy nel firefox per aiutarti. C'è un collegamento ad esso.

Slashy

+0

mi hai appena salvato ... :) +1 – slayedbylucifer

2

Questo problema di conversione automatica backslash ha fissato in Chrome versione> = 53.0.2785.116.

Ora i backslash sono trattati correttamente come % 5C.

+0

Sono quasi sicuro che non sia così. Succede ancora in Chrome 62.0.3202.89 quando si digita nella barra degli indirizzi o quando si usa 'window.location =" ";' nella console di DevTools. – bit2shift

Problemi correlati