XMLHttpRequest.send in errore con percorso relativo

Sto avendo difficoltà con qualcosa probabilmente correttivo. Sto sviluppando un sito Web senza un server. In tal modo, mi imbatto in problemi quando si tenta di accedere ai file tramite XMLHttpRequest.

Come puoi vedere nello snippet di codice di esempio, creo la variabile, la apro con un percorso relativo al file desiderato e utilizzo la funzione di invio.

Quando uso un percorso relativo che deve attraversare fino a una directory genitore, la funzione send () fallisce. Tuttavia, se fornisco un percorso che si trova nella stessa directory della pagina Web o inoltrato in una sottocartella della directory della pagina Web corrente, vedo che XMLHttpRequest restituisce correttamente. In questi casi di successo, posso vedere i dati del file di test in request.responseText.

Qualsiasi aiuto con questo sarebbe molto apprezzato.

L’unico vantaggio che ho adesso è che potrebbe esserci una minaccia alla sicurezza che impedisce le richieste ‘get’ che attraversano la directory principale.

Grazie.

Snippet di codice:

function test(){ var request = new XMLHttpRequest(); request.open('GET', "../test.txt", true); request.send();//FAILS HERE //Get Response var response = request.responseText; } function test2(){ var request = new XMLHttpRequest(); request.open('GET', "test.txt", true); request.send(); //Get Response var response = request.responseText; //SUCCESSFUL } 

Dal sito Web MDN , sul motore Gecko e quindi sul browser Firefox:

un file può leggere un altro file solo se la directory padre del file di origine è una directory degli antenati del file di destinazione.

Regole simili esistono in altri browser. Questa è una limitazione del protocollo file:/// . È lì per una buona ragione. Non ha senso cercare di romperlo. La soluzione è eseguire un server locale sul tuo computer, che non è nemmeno un po ‘difficile.

Per chiarire: supponiamo di avere una struttura di file come questa:

 - file1.html - dir1/ - file2.html - dir2/ - index.html - file3.html - dir3/ - file4.html 

Da index.html , puoi usare Javascript per accedere a file3.html e file4.html . Non può accedere a file1.html o file2.html .

Apri il file direttamente nel browser utilizzando il file-> apri quindi copia l’URL nella barra degli indirizzi.