Использование 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.