Вызов ajax работает в Chrome, Firefox, но не в IE?

Следующий код отлично работает в Chrome, Firefox и Komodo Dragon. Я даже чистую установку Firefox (доказывая, что я не аутентифицирован FB или что-нибудь). Это не работает в IE. Chrome, FF и дракон - все это приводит к предупреждению с действительным маркером access_token. IE приводит к "Доступ запрещен". Я пробовал GET и POST, оба имеют одинаковые результаты.

    function getWallPosts() {
        $.ajax({
            url: 'https://graph.facebook.com/oauth/access_token?client_id=<facebookid>&client_secret=<secretcode>&grant_type=client_credentials',
            type: 'POST',
            success: function (data) {
                alert(data)
            },
            error: function (a, b, c) {
                alert(a + ' ' + b + ' ' + c);
            }
        });
    };

РЕДАКТИРОВАТЬ: Дополнительная информация *

Я попытался использовать XDomainRequest, как рекомендовано в комментариях, однако я все еще получаю доступ запрещен только в IE. Я считаю, что это причина, почему:

http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

Запросы должны быть направлены на ту же схему, что и страница хостинга.

Это ограничение означает, что если ваша страница AJAX находится по адресу http://example.com/, то целевой URL-адрес также должен начинаться с HTTP. Аналогично, если ваша страница AJAX находится по адресу https://example.com/, целевой URL-адрес также должен начинаться с HTTPS.

Мы определенно стремились запретить HTTPS-страницам выполнять запросы XDomainRequest для ресурсов на основе HTTP, поскольку этот сценарий представляет собой угрозу безопасности смешанного содержимого, которую многие разработчики и большинство пользователей не понимают.

Однако это ограничение является слишком широким, поскольку не позволяет HTTP-страницам выдавать запросы XDomainRequests, предназначенные для HTTPS-страниц. Хотя верно, что сама HTTP-страница может быть скомпрометирована, нет никаких причин, по которым ей следует запретить безопасный доступ к публичным ресурсам.

Хуже всего то, что ограничение той же схемы означает, что веб-разработчики, тестирующие свои страницы локально с использованием схемы file://, обнаружат, что все запросы XDomainRequests заблокированы, поскольку file:// не соответствует ни http: //, ни https: / /, которые являются единственными действительными целевыми схемами (пункт № 1). Чтобы обойти эту проблему, веб-разработчики должны разместить свои страницы на локальном веб-сервере (например, IIS, хост-сервер Visual Studio и т. Д.).

Чтобы обойти это ограничение, вы можете создать postMessage-Proxy-for-XDR.

Предоставленный мне хостинг-пакет не включает никаких опций SSL. У кого-нибудь еще есть другие идеи?

1 ответ

Решение

Ответ заключался в том, чтобы сделать ajax-вызов сервису на стороне сервера, а затем сделать этот сервис вызовом OAuth. В моем случае я использовал ASMX-сервис asp.net. Это также может быть PHP или что-нибудь еще. Это сейчас работает.

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