[英]XMLHttpRequest.send failing with relative path
我很難找到可能有所補救的東西。 我正在開發一個沒有服務器的網站。 這樣做時,我在嘗試通過XMLHttpRequest訪問文件時遇到了問題。
正如您在示例代碼段中看到的,我創建了變量,使用相應路徑打開它,並使用send函數。
當我使用必須遍歷到父目錄的相對路徑時,send()函數將失敗。 但是,如果我提供的路徑與網頁位於同一目錄中,或者在當前網頁目錄的子文件夾中轉發,我會看到XMLHttpRequest成功返回。 在這些成功的案例中,我可以在request.responseText中看到測試文件的數據。
任何有關這方面的幫助將不勝感激。
我現在唯一的領先是可能存在一個安全威脅,阻止“get”請求遍歷父目錄。
謝謝。
代碼片段:
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
}
在MDN網站上 ,關於Gecko引擎以及Firefox瀏覽器:
僅當原始文件的父目錄是目標文件的祖先目錄時,文件才能讀取另一個文件。
其他瀏覽器也存在類似的規則。 這是file:///
協議的限制。 這是有充分理由的。 試圖打破它是沒有意義的。 解決方案是在您的計算機上運行本地服務器,這甚至有點困難。
澄清:讓我們假設您有一個這樣的文件結構:
- file1.html
- dir1/
- file2.html
- dir2/
- index.html
- file3.html
- dir3/
- file4.html
在index.html
,您可以使用Javascript訪問file3.html
和file4.html
。 它不能訪問file1.html
或file2.html
。
使用file-> open直接在瀏覽器中打開文件,然后在地址欄中復制URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.