Использование jQuery/Jsonp для отправки междоменного запроса и анализа результата?

Я пытаюсь получить и проанализировать данные с удаленного междоменного сайта с помощью jQuery. Чтобы избежать проблем с Same-Origin-Policy и Cross-Domin, я использую jsonp.

<html>  
<head>  
<title>Ajax Sample</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script>
</style>
<script>
$(document).ready(function(){
    //Obviously the service wont give a JSON format response
    var url='http://stackru.com/search?q=Cross+domain';
    $.ajax({
     url:url,
     dataType: 'jsonp',
     success:function(data){
         console.log(data);
     },
     error:function(){
         alert("Error");
     },
    });
});
</script>
<body>
</body>  
</html>

Но то, что я получил, это error:

Resource interpreted as Script but transferred with MIME type text/html: "http://stackru.com/search?q=Cross+domain&callback=jQuery1708665772899985313_1374154944485&_=1374154944492"

а также

Uncaught SyntaxError: Unexpected token < 

Так как сделать это правильно?

1 ответ

Первое предупреждение нормально, если на удаленном конце не установлено правильное Content-Type заголовок для его вывода JSONP. Это всего лишь предупреждение, оно не причиняет вреда.

Если вторая ошибка связана с попыткой получить доступ к веб-сайту stackru, то эта ошибка просто потому, что вы пытаетесь выбросить HTML-код в интерпретатор JS.

Обратите внимание, что запрос JSONP должен получить JSON в форме действительного сценария JS. Это не будет работать с любым другим типом ввода.

По соображениям безопасности вы не можете получить доступ к другим типам ресурсов из других источников, если только эти ресурсы не отправят соответствующие Access-Control-Allow-Origin Заголовки HTTP.

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