Как загрузить данные с помощью js с помощью браузера?

#javascript #cors

#javascript #корс

Вопрос:

Я хочу написать скрипт на javascript. Затем запустите его с помощью моего браузера на моем локальном компьютере, чтобы загрузить текстовые файлы с другого веб-сайта, а затем обработать эти данные с помощью js.

Я пробовал это:

 var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    console.log("readyState: " this.readyState ", status: " this.status);
    if (this.readyState == 4 amp;amp; 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. Некоторые веб-сайты блокируют возможность использования AJAX для доступа к своим данным, вы можете использовать CURL.

2. @NirTzezana — Больше того, они не разблокируют это. По умолчанию используется блокировка.

3. @T.J.Crowder верно, по умолчанию он заблокирован.

Ответ №1:

Могу ли я не загружать данные с других веб-сайтов, используя js в моем браузере?

Только если они позволят вам, поддерживая CORS и разрешая ваш origin или предоставляя API JSONP (а не ajax).

Однако, поскольку вы делаете это локально, если вы хотите использовать JavaScript для этого, вы можете сделать это с Node.js а не в браузере. Та же политика Origin применяется, в частности, к браузерам (это для вашей защиты, а не для защиты веб-сайта). Это не относится к приложениям без браузера, таким как Node.js .

Или, если вы использовали JavaScript только потому, что считали это необходимым, вы можете использовать любое количество других инструментов (таких curl как в * nix).

Комментарии:

1. Хорошо, спасибо, я не знал, что сервер заблокировал это, я думал, что это мой браузер, я хотел использовать javascript в своем браузере, но если это не сработает так, я использую что-то другое.

2. @Alexanus — На самом деле блокировку выполняет ваш браузер. Когда вы делаете запрос из разных источников, если сервер не включает в ответ определенные HTTP-заголовки, браузер отказывается передавать ответ в код JavaScript. Таким образом, по умолчанию запросы из разных источников заблокированы, но сервер может разрешить выполнение запроса путем предоставления HTTP-заголовков, сообщающих браузеру, что можно передать ответ в код JavaScript. По сути, речь идет о том, чтобы не разрешать веб-сайту A видеть информацию с веб-сайта B, если веб-сайт B специально не разрешает доступ к этой информации с A.

3. Представьте A как malicious.example.com и B как yourbank.com . 🙂 Проблема в том, что если у вас активный сеанс просмотра с вашим банком, переход к malicious.example.com не должен приводить к утечке информации о ваших финансах из yourbank.com в malicious.example.com (или, что еще хуже, случайно разрешить malicious.example.com перевод с вашей учетной записи …).