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>
Спасибо, но мне нужно получить исходный код html с некоторых URL-адресов на стороне клиента, несмотря на CORS. Что я могу сделать?
Что ж, если у вас нет ключа, вы не сможете войти в дверь, поэтому это невозможно сделать с помощью только кода со стороны клиента. Вам нужно будет использовать прокси на стороне сервера, чтобы прочитать его.
Вероятно, не очень много, поскольку CORS необходимо установить на стороне сервера, в этом случае stackoverflow. Вам действительно нужен html-код из stackoverflow или вам нужна информация с веб-сайта. Если это информация, я оформлю заказ api.stackexchange.com



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я запустил ваш код в JSFiddle и получил сообщение об ошибке, в котором говорилось, что это проблема CORS. Вы можете просмотреть эти сообщения об ошибках с помощью открытие консоли Javascript в любом браузере.
Проблемы CORS (Cross-Origin Resources Sharing) возникают, когда у вас нет достаточных разрешений для доступа к ресурсам между разными доменами. На каждом веб-сервере настроены политики, которые определяют правила доступа к этим файлам, а параметры безопасности Stack Overflow настроены так, чтобы запретить такой доступ к их сайту. Вы можете подробнее о CORS здесь.
Спасибо. Есть ли способы получить исходный код html страниц с URL-адресов на стороне клиента?
@curious_coder Метод, который вы использовали, отлично работает для большинства страниц, он не работает, только если у вас нет на это разрешения. И поскольку веб-сервер устанавливает эти правила, вы ничего не можете сделать на стороне клиента, чтобы это изменить. Единственный способ обойти это - если у вас есть собственный веб-сервер, и вы, этот веб-сервер, будете делать запросы за вас и действовать как прокси. По-видимому, есть служба, которая делает это за вас (medium.com/netscape/…), но будьте осторожны, потому что вы не хотите использовать данные, которые не должны злонамеренно иметь.
Сообщение об ошибке сообщает вам, почему .... CORS