LINUX.ORG.RU

Получить html страницы стороннего сервера.

 , ,


0

1

Прочел кучу всего по поводу этого вопроса, но так и не понял как это сделать в js. С php я делал file_get_contents и все получал, но тут проблема, оно исполняется на стороне сервера, и как следствие с его IP. А нужно клиентский, так как формируется ссылка на файл. Как это реализовать на js? Читал про cors, но не понял куда все писать. Изучать начал все это буквально сейчас. Если можно то с примерами. Будут тупые вопросы.


Как это реализовать на js

Стоит начать с нормальных вопросов. Сервер или клиент ?

Dred ★★★★★
()

Что-то вроде

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://domain.tld/path/to/location', true);
xhr.onload = function(){
 passResultToThisFunction(this.response);
}
xhr.send();
На том же домене будет работать, для запросов на сторонние надо, как минимум, добавлять Access-Control-Allow-* заголовки (CORS) и обрабатывать preflight запросы на его стороне.

WDWTFWW
()

Делаешь AJAX-запрос, например, на нужный URL и получаешь страницу. Ну, это если разрешены кросс-доменные запросы на стороне сервера. Можно открывать страницы в iframe и пытаться получить доступ к document у iframe, (var x=document.getElementById(«iframe_id»);var y=(x.contentWindow || x.contentDocument);if (y.document)y=y.document;alert(y.body.innerHTML);) но, тоже можно обламаться из-за, например, same-origin policy.

P.S. Написал какую-то дичь без форматирования, но да пофиг.

WARNING ★★★★
()
Ответ на: комментарий от WDWTFWW

Вот как раз в этом вопрос. Я не знаю куда заголовки пихать. В .htaccess?

Yaourt
() автор топика
Ответ на: комментарий от WARNING

Примерно понятно. Но я пока не совсем понимаю как даются права

Yaourt
() автор топика

Тебе нужно чтобы сервер с которого ты хочешь получить html отдавал CORS заголовки
Пр:

access-control-allow-origin: http://example.com

вместо example.com домен на котором твой скрипт работает(можно использовать «*», но ето не секьюрно).
Заголовки можно добавить и через htaccess
Header add Access-Control-Allow-Origin "http://example.com"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS"

ritsufag ★★★★★
()
Ответ на: комментарий от Yaourt

Если у сервера кроссдоменный запрос не предусмотрен, то из клиентского js никак его не выполнить.

WDWTFWW
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.