Простой AJAX HTTP GET с использованием jQuery

Я очень новичок в jQuery и AJAX, я пытаюсь следовать коду, просто получаю запрос http.

<html>
<head>
</head>
<body>
    <script src = "jquery-2.1.4.js"></script>
    <script src = "app.js"></script>
    <script>
        $(document).ready(function(){
            $("button").click(function(){
                $.get("http://google.com", function(data, status){
                    alert("Data: " + data + "\nStatus: " + status);
                });
            });
        });
    </script>
    <button>Send an HTTP GET request to a page and get the result back</button>
</body>
</html>

и я получаю следующую ошибку

XMLHttpRequest не может загрузить http://google.com/. В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Таким образом, доступ к Origin 'file://' запрещен.

Пожалуйста, помогите мне, что мне не хватает.


person newhorizens    schedule 18.08.2015    source источник
comment
Это называется ограничениями Same Origin Policy, связанными с доступом к ресурсам.   -  person Arun P Johny    schedule 18.08.2015
comment
В нем говорится о включении CORS на стороне сервера, но в моем случае это просто http:://google.com. Как я должен это делать?   -  person newhorizens    schedule 18.08.2015
comment
Вы не можете использовать данные Google, пока они не разрешат их использовать нашему сайту.   -  person Roli Agrawal    schedule 18.08.2015


Ответы (3)


Та же политика происхождения не позволит вам получить доступ к ресурсам, размещенным на другом сервере. В вашем случае, если целевая система не находится под вашим контролем, вы можете посмотреть такие утилиты, как jsonp, которые могут помочь вы запускаете междоменные запросы.

person Pavan Andhukuri    schedule 18.08.2015

Таким образом, в соответствии с SOP, которая является политикой одного и того же источника. В соответствии с этой политикой веб-браузер разрешает сценариям, содержащимся на первой веб-странице, доступ к данным на второй веб-странице, но только если обе веб-страницы имеют одинаковое происхождение. Имя хоста и номер порта. чтобы преодолеть это, вы можете использовать как

$.ajax({
    url: "http://google.com",
    dataType: "jsonp"},
    success: function( response ) {
        console.log( response ); // server response
    }
})

Узнайте больше о JSONP.

person Roli Agrawal    schedule 18.08.2015

Это просто междоменный запрос, который вы делаете из своего приложения, то, что вы должны сделать, чтобы избежать этой ошибки,

1) Enable cors in your application to make a cross domain application.
2) You can use JSONP while making your request to cross domain instead of GET.

Перейдите по этой ссылке, чтобы получить более подробную информацию о «CORS» https://developers.google.com/api-client-library/javascript/features/cors

person nitin    schedule 18.08.2015