Загрузка файла HTTP с помощью Javascript

Есть ли способ (в Javascript) загрузить удаленный веб-сайт (например, с помощью Curl), прочитать его в строковую переменную и продолжить его обработку?

Поведение ключевого слова "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) для оценки ваших знаний,...
6
0
8 669
5

Ответы 5

Нет. Javascript ограничен доменом, в котором он запущен.

Вы можете загрузить файл только с того же домена, в соответствии с Та же политика происхождения. Однако вы можете загружать контент из того же домена, используя объект XMLHTTPRequest:

 var xhReq = createXMLHttpRequest();
 xhReq.open("GET", "page.html", true);
 xhReq.onreadystatechange = onResponse;
 xhReq.send(null);
 ...
 function onResponse() {
   if (xhReq.readyState != 4)  { return; }
   var serverResponse = xhReq.responseText;
   ...
 }

Есть способы обойти эту политику, некоторые из них перечислены на той же странице Википедии. Но в лучшем случае это взлом, а в худшем - незаконный.

Конечно. URL-адрес должен быть из того же домена, если только URL-адрес не имеет междоменной политики или вы не создаете сценарий прокси на стороне сервера.

Следующий код является примером ajax-вызова любого домена через прокси-скрипт PHP:


var xmlhttp =  new XMLHttpRequest();
xmlhttp.open("POST","http://localhost/proxy.php?url=http://google.com", true);
xmlhttp.onreadystatechange = function() {
    if (request.readyState == 4 && request.status == 200) {
      // ensure we have a response...
      if (xmlhttp.responseText) {
         var html =  xmlhttp.responseText;
         // do your processing here...
      }
    }
};
xmlhttp.send();

Затем вы должны подключить свой скрипт proxy.php к заданному URL-адресу через Curl (или любую другую библиотеку URL-адресов, которую имеет ваш серверный язык), а затем просто эхом отобразить контент из вашего домена ...


<?php

// proxy.php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$_GET["url"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
echo $result;

?>

надеюсь, что все имеет смысл.

Вы можете использовать Yahoo Query Language для запроса любой страницы в Интернете.

Например, если вам нужен полный исходный код домашней страницы Google, вы можете использовать:

select * from html where url = "http://google.com" and xpath='/html' limit 1

Вам нужно будет использовать их обратный вызов JSON и повторно сериализовать возвращенный объект, но вы сможете получить полное представление о странице.

YQL - это круто. Я пока не уверен, где бы я его использовал, но это все еще интересный инструмент.

Diodeus - James MacFarlane 16.12.2008 19:25

В основном вас не пустят. Javascript не позволит вам сделать это по соображениям безопасности. Однако вы можете запрашивать данные json из других доменов с помощью jQuery. Вот пример из документации jquery, который получает изображения кошек с flickr ...

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
    function(data){
      $.each(data.items, function(i,item){
        $("<img/>").attr("src", item.media.m).appendTo("#images");
        if ( i == 4 ) return false;
      });
    });

Вы можете найти этот код в Документы jQuery. Как видите, это делает запрос, возвращает данные и обновляет некоторые теги изображений в DOM изображениями кошек ...

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