jQuery AJAX-запрос блокируется, потому что Cross-Origin

Как получить контент с удаленного URL через AJAX?

jQuery AJAX-запрос блокируется, потому что Cross-Origin

Консольный журнал

Блокировка перекрестного запроса: та же политика происхождения запрещает чтение удаленного ресурса по адресу http://www.dailymotion.com/embed/video/x28j5hv. (Причина: отсутствует заголовок CORS "Access-Control-Allow-Origin").

Блокировка перекрестного запроса: та же политика происхождения запрещает чтение удаленного ресурса по адресу http://www.dailymotion.com/embed/video/x28j5hv. (Причина: запрос CORS не выполнен).

Код

$.ajax({
url: "http://www.dailymotion.com/embed/video/x28j5hv",
type:'GET',
contentType: "html",
crossDomain:true,
success: function(data){
   //$('#content').html($(data).html());
   var src = $(data).html();
    alert(src);
    return false;
}

6 ответов

Решение

Попробуй использовать JSONP в вашем вызове Ajax. Это обойдёт ту же Политику происхождения.

http://learn.jquery.com/ajax/working-with-jsonp/

Попробуй пример

$.ajax({
    url: "https://api.dailymotion.com/video/x28j5hv?fields=title",

    dataType: "jsonp",
    success: function( response ) {
        console.log( response ); // server response
    }

});

Вы ничего не можете сделать на своей стороне (на стороне клиента). Вы не можете включить кросс-доменные вызовы самостоятельно, для источника (dailymotion.com) должна быть включена поддержка COORS.

Единственное, что вы можете сделать, это создать прокси-скрипт на стороне сервера, который сделает это за вас. Используете ли вы какие-либо серверные сценарии в вашем проекте? PHP, Python, ASP.NET и т. Д.? Если это так, вы можете создать серверный сценарий "прокси", который выполняет HTTP-вызов dailymotion и возвращает ответ. Затем вы вызываете этот сценарий из своего кода Javascript, поскольку этот сценарий на стороне сервера находится в том же домене, что и код вашего сценария, COORS не будет проблемой.

Попробуйте с помощью cURL-запроса для междоменного домена.

Если вы работаете через сторонние API или получаете данные через CROSS-DOMAIN, всегда рекомендуется использовать скрипт cURL (на стороне сервера), который является более безопасным.

Я всегда предпочитаю сценарий cURL.

Если источником является сервер, к которому у вас есть доступ, вы можете открыть междоменный доступ для определенной папки (и ее подпапок) с помощью.htaccessфайл, расположенный в соответствующей папке:

      <IfModule mod_headers.c>
  Header set Access-Control-Allow-Origin "*"
</IfModule>

Я решил это, изменив путь к файлу в браузере:

  • Вместо того: c/XAMPP/htdocs/myfile.html
  • Я написал: localhost/myfile.html

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