Проблема с вызовом ajax из приложения Facebook - PullRequest
0 голосов
/ 04 сентября 2011

Я использую следующий код, чтобы совершить ajax-вызов на мой сервер.
Код выполняет вызов на сервер и, в свою очередь, получает список всех друзей, которые используют одно и то же приложение.

FB.getLoginStatus(function(response) {
  if (response.session) {
        uid = response.session.uid;
        access_token = response.session.access_token;
        $.getJSON(serverLink+"ajax.php?action=getFriendsApp", {token:access_token}
         ,function(data){
         var temp = data;
         if(true){
                var container = $('#friends_part_main');
                var fp = $('#friends_part');
                fp.show();
                var friends = data;
                for(var i in friends){
                    container.append('<a target="_blank" href="http://www.facebook.com/profile.php?id='+friends[i]+'">\n\
                    <img src="https://graph.facebook.com/'+friends[i]+'/picture" alt="friend" />\n\
                    </a>');     
                        }
                    }
                });
            }

Если я запускаю этот код прямо из браузера (www.mydomain.com/app), он работает.
Но когда я запускаю его со страницы холста (app.facebook.com), яполучить следующую ошибку:

XMLHttpRequest не может загрузить http://www.mydomain.com/src/ajax.php?action=getFriendsApp&token=AAAC0kxh1WAcBAHo3s0QaVy34mgdnCNGvrDZCvIQsZCBHZC8ovR9IuYEFlUKRqK0GgJosWAD6Embg8QrN07vivE6mOuAZAtxUD7WpySDL3wZDZD. Origin https://www.mydomain.com не разрешен Access-Control-Allow-Origin.

Можете ли вы выяснить, почему ??

Ответы [ 3 ]

3 голосов
/ 31 октября 2012

Для меня домен в URL-адресе моей ajax-страницы "ajax.php" и URL-адреса ajax-calling-страницы "index.php" не совпадали. "www" пропустил ... Вы должны убедиться, что ваши два домена сценариев (вызывающий сценарий и отвечающий сценарий) в точности совпадают! Проверьте "http" против "https", проверьте "https://my -domain.com" против "https://www.my -domain.com" и т. Д. Надеюсь, поможет. ххх

2 голосов
/ 04 сентября 2011

Вам нужен JSONP или чтобы разрешить ajax-запросы в вашем домене.Вы можете заставить его с помощью

header("Allow-Access-Control-Origin:*");
1 голос
/ 04 сентября 2011

Ваш XMLHttpRequest не разрешен контролем доступа, разрешают отправку, потому что Facebook загружает ваше приложение через безопасный https, но вы можете получить доступ только по http. Вы не можете загрузить с другого домена, протокола или порта. Попробуйте JSONP с функцией обратного вызова. Вы можете загрузить код Javascript из любого места, если ваш ответ содержит не только данные, но и функцию обратного вызова, вы можете получить доступ к любым данным из любого места вашего сервера (сайта).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...