如何在浏览器中使用js下载数据?

时间:2019-03-10 11:41:08

标签: javascript cors

我想用JavaScript编写脚本。然后使用本地计算机上的浏览器启动它,以便从另一个网站下载文本文件,然后使用js处理此数据。

我尝试过:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    console.log("readyState: "+this.readyState+", status: "+this.status);
    if (this.readyState == 4 && this.status == 200) {
        document.getElementById("data").innerHTML = this.responseText;
    }
};
xhttp.open("GET", "http://website.com", true);
xhttp.send();

但是我总是会收到此错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://website.com. (Reason: CORS request did not succeed)

我正在使用Firefox。这是不可能的吗?我不能在浏览器中使用js从其他网站下载数据吗?

1 个答案:

答案 0 :(得分:2)

  

我不能在浏览器中使用js从其他网站下载数据吗?

仅当他们通过支持CORS和允许您的出身或提供JSONP(而不是ajax)API允许您使用时。

但是,由于您是在本地进行的,因此,如果要使用JavaScript进行操作,可以使用Node.js而不是在浏览器中进行操作。 Same Origin Policy适用于浏览器,特别是(用于您的保护,而不是网站的保护)。它不适用于非浏览器应用程序,例如Node.js。

或者,如果由于您认为必须而仅使用JavaScript,则可以使用许多其他工具(例如* nix上的curl)。