Получение исходного кода HTML через XMLHttpRequest [JavaScript]

XMLHttpRequest работает для первого URL-адреса, но не работает для второго URL-адреса. Я думаю, что эта функция не работает для динамических веб-страниц. Я также пробовал ajax для получения исходного кода html, но это тоже не сработало. Что я могу сделать? Как могу ли я изменить этот код, чтобы он работал со вторым URL-адресом?

<script language = "Javascript" type = "text/javascript">

function getSource(url)
{
    var req = new XMLHttpRequest();
    req.open(
        "GET",
        url,
        true);
    req.onreadystatechange = statusListener;
    req.send(null);
    function statusListener()
    {
    if (req.readyState == 4) 
        {
            if (req.status == 200)
            {
                var doc=req.responseText;
                alert(doc);
            }
        }
    }
}

url1 = "https://pages.github.com/";
url2 = "https://stackoverflow.com/";

// This code WORKS
getSource(url1);

// This code DON'T WORK
getSource(url2);
</script>

Сообщение об ошибке сообщает вам, почему .... CORS

epascarello 25.10.2018 19:56

Спасибо, но мне нужно получить исходный код html с некоторых URL-адресов на стороне клиента, несмотря на CORS. Что я могу сделать?

curious_coder 25.10.2018 20:07

Что ж, если у вас нет ключа, вы не сможете войти в дверь, поэтому это невозможно сделать с помощью только кода со стороны клиента. Вам нужно будет использовать прокси на стороне сервера, чтобы прочитать его.

epascarello 25.10.2018 20:09

Вероятно, не очень много, поскольку CORS необходимо установить на стороне сервера, в этом случае stackoverflow. Вам действительно нужен html-код из stackoverflow или вам нужна информация с веб-сайта. Если это информация, я оформлю заказ api.stackexchange.com

relief.melone 25.10.2018 20:10
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
563
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я запустил ваш код в JSFiddle и получил сообщение об ошибке, в котором говорилось, что это проблема CORS. Вы можете просмотреть эти сообщения об ошибках с помощью открытие консоли Javascript в любом браузере.

Error message as seen in the Javascript console

Проблемы CORS (Cross-Origin Resources Sharing) возникают, когда у вас нет достаточных разрешений для доступа к ресурсам между разными доменами. На каждом веб-сервере настроены политики, которые определяют правила доступа к этим файлам, а параметры безопасности Stack Overflow настроены так, чтобы запретить такой доступ к их сайту. Вы можете подробнее о CORS здесь.

Спасибо. Есть ли способы получить исходный код html страниц с URL-адресов на стороне клиента?

curious_coder 25.10.2018 20:10

@curious_coder Метод, который вы использовали, отлично работает для большинства страниц, он не работает, только если у вас нет на это разрешения. И поскольку веб-сервер устанавливает эти правила, вы ничего не можете сделать на стороне клиента, чтобы это изменить. Единственный способ обойти это - если у вас есть собственный веб-сервер, и вы, этот веб-сервер, будете делать запросы за вас и действовать как прокси. По-видимому, есть служба, которая делает это за вас (medium.com/netscape/…), но будьте осторожны, потому что вы не хотите использовать данные, которые не должны злонамеренно иметь.

Oztaco - Reinstate Monica C. 25.10.2018 20:15

Другие вопросы по теме