Отправка учетных данных с междоменных сообщений? - PullRequest
71 голосов
/ 13 января 2010

Согласно Запросы с учетными данными , Firefox будет отправлять учетные данные вместе с междоменными сообщениями, если

invocation.withCredentials = "true";

установлено ... Но не похоже, что Ajax API jQuery предоставляет какой-либо механизм для этого.

Я что-то пропустил? Есть ли другой способ, которым я могу это сделать?

Ответы [ 3 ]

146 голосов
/ 25 августа 2011

Функциональность должна быть нарушена в jQuery 1.5.

Начиная с jQuery 1.5.1, вы должны использовать параметр xhrFields.

$.ajaxSetup({
    type: "POST",
    data: {},
    dataType: 'json',
    xhrFields: {
       withCredentials: true
    },
    crossDomain: true
});

Документы: http://api.jquery.com/jQuery.ajax/

Сообщение об ошибке: http://bugs.jquery.com/ticket/8146

39 голосов
/ 13 января 2010

Вы можете использовать обратный вызов beforeSend для установки дополнительных параметров (объект XMLHTTPRequest передается ему как единственный параметр).

Точно так же, как вы знаете, этот тип междоменного запроса не будет работать в обычном сценарии сайта и не будет работать с любым другим браузером. Я даже не знаю, какие ограничения безопасности накладывает FF 3.5, просто чтобы вы не бились головой о стену даром:

$.ajax({
    url: 'http://bar.other',
    data: { whatever:'cool' },
    type: 'GET',
    beforeSend: function(xhr){
       xhr.withCredentials = true;
    }
});

Еще одна вещь, о которой следует помнить, это то, что jQuery настроен для нормализации различий в браузере. Вы можете обнаружить, что библиотека jQuery налагает дополнительные ограничения, запрещающие этот тип функций.

0 голосов
/ 17 ноября 2017

В jQuery 3 и, возможно, более ранних версиях следующая более простая конфигурация также работает для индивидуальных запросов:

$.ajax(
        'https://foo.bar.com,
        {
            dataType: 'json',
            xhrFields: {
                withCredentials: true
            },
            success: successFunc
        }
    );

Полная ошибка, которую я получал в Firefox Dev Tools -> вкладка «Сеть» (на вкладке «Безопасность» для отдельного запроса), была:

Произошла ошибка при подключении к узлу foo.bar.com.SSL невозможно договориться о приемлемом наборе параметров безопасности. Ошибка код: SSL_ERROR_HANDSHAKE_FAILURE_ALERT

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