Javascript XMLHttpRequest.send使用相对路径失败

Javascript XMLHttpRequest.send使用相对路径失败,javascript,html,xmlhttprequest,Javascript,Html,Xmlhttprequest,我遇到了一些可能是补救性的问题。我正在开发一个没有服务器的网站。在这样做的过程中,我在尝试通过XMLHttpRequest访问文件时遇到了问题 正如您在示例代码段中所看到的,我创建了变量,用所需文件的相对路径打开它,然后使用send函数 当我使用必须遍历父目录的相对路径时,send()函数会失败。但是,如果我提供的路径与网页位于同一目录中,或者在当前网页目录的子文件夹中转发,我会看到XMLHttpRequest成功返回。在这些成功的案例中,我可以在request.responseText中看到测

我遇到了一些可能是补救性的问题。我正在开发一个没有服务器的网站。在这样做的过程中,我在尝试通过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
}

使用file->Open直接在浏览器中打开文件,然后复制地址栏中的URL。

来自,关于Gecko引擎,因此关于Firefox浏览器:

只有当源文件的父目录是目标文件的祖先目录时,文件才能读取另一个文件

其他浏览器中也存在类似的规则。这是
文件的一个限制://
协议。它在那里有很好的理由。试图打破它是没有意义的。解决方案是在您的计算机上运行本地服务器,这一点都不难

澄清一下:假设您的文件结构如下:

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

index.html
中,您可以使用Javascript访问
file3.html
file4.html
。它无法访问
file1.html
file2.html

为什么不安装像Apache/IIS这样的本地服务器?这将解决您的问题。从安全角度来看,很可能浏览器不允许这样做