2012-04-21 2 views
3

Можно ли загрузить и разобрать текстовый файл из другого домена с помощью JavaScript?Можно ли загрузить и проанализировать файл на удаленном сервере?

У меня есть это fiddle, но я застрял, выясняя, что я делаю неправильно.

Markup:

<div id="clickme">Click me</div> 
    <div id="result">Result: </div> 

Код:

$("#clickme").click(function() { 
    /* ################################### 
    NOTE: im on say example.com/test.html but trying 
    NOTE: to access different_domain_sample.com 
    */ 
    var req = new XMLHttpRequest(); 
    var sURL = "http://www.google.com/robots.txt"; 

    req.open("GET", sURL, true); 
    req.setRequestHeader("User-Agent", "blah/4.2"); 

    req.onreadystatechange = function() { 
    if (req.readyState == 4) { 
     $("#result").text("Result is: <pre>" + req.responseText + "</pre>"); 
    } 
    }; 
    req.send(null); 
}); 

Уже ответил, но подробнее об этом здесь Cross-origin resource sharing

+2

Вы не можете отправлять запросы через домены через JavaScript. – Blender

+0

И это хорошо :) –

+0

@Blender Это то же ограничение, что и в апплетах java? Могу ли я «подписать» код или спросить пользователя, доверяет ли он этому коду, поэтому его можно получить доступ к файлам через домены или что-то в этом роде? – lzdt

ответ

3

Есть три способа сделать это:

  1. С помощью не-просмотра r-based proxy из вашего домена, который будет получать данные от вашего имени. Вы также можете использовать плагин, который может обойти политику одного и того же происхождения.
  2. Используйте JSONP или другой подобный хакерский подход вокруг политики одного и того же происхождения. Это потребует, чтобы веб-сервер поддерживал JSONP.
  3. Отключить политику кросс-происхождения (определенно не рекомендуется; очень опасно)
+1

Ухх, хорошо, получилось: http://en.wikipedia.org/wiki/Same_origin_policy#Workarounds большое спасибо! – lzdt

4

Это из-браузеров реализовали функцию, которая называется кросс-сайт-сценариев-профилактика. Например, вы можете выполнить запрос ajax в php-файле на том же сервере и в этом запросе целевой страницы использовать curl.

+0

Так же, как я бы написал. –

Смежные вопросы