簡體   English   中英

XMLHttpRequest.send失敗,帶有相對路徑

[英]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.htmlfile4.html 它不能訪問file1.htmlfile2.html

使用file-> open直接在瀏覽器中打開文件,然后在地址欄中復制URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM