Отправка учетных данных с междоменными сообщениями?
по данным запросы с учетными данными, Firefox будет отправлять учетные данные только вместе с междоменными сообщениями, если
invocation.withCredentials = "true";
установлен... но не похоже, что Ajax API jQuery предоставляет какой-либо механизм для этого.
есть ли что-то, что я пропустил? Есть ли другой способ сделать это?
3 ответа:
функциональность должна быть нарушена в jQuery 1.5.
начиная с jQuery 1.5.1 вы должны использовать xhrfields param.
$.ajaxSetup({ type: "POST", data: {}, dataType: 'json', xhrFields: { withCredentials: true }, crossDomain: true });
Docs:http://api.jquery.com/jQuery.ajax/
сообщение об ошибке:http://bugs.jquery.com/ticket/8146
можно использовать
beforeSend
обратный вызов для установки дополнительных параметров (XMLHTTPRequest
объект передается ему как его единственный параметр).просто чтобы вы знали, этот тип междоменного запроса не будет работать в обычном сценарии сайта и не с любым другим браузером. Я даже не знаю, какие ограничения безопасности накладывает FF 3.5, просто чтобы вы не бились головой о стену ни за что:
$.ajax({ url: 'http://bar.other', data: { whatever:'cool' }, type: 'GET', beforeSend: function(xhr){ xhr.withCredentials = true; } });
еще одна вещь, чтобы остерегаться, это то, что jQuery настройка для нормализации различий браузера. Вы можете обнаружить, что библиотека jQuery накладывает дополнительные ограничения, которые запрещают этот тип функциональности.
в jQuery 3 и, возможно, более ранних версиях, следующая более простая конфигурация также работает для отдельных запросов:
$.ajax( 'https://foo.bar.com, { dataType: 'json', xhrFields: { withCredentials: true }, success: successFunc } );
полная ошибка, которую я получал в Firefox Dev Tools - > Network tab (на вкладке Security для отдельного запроса), была:
ошибка во время подключения к Foo.баре.ком.Узла SSL был невозможно согласовать приемлемый набор параметров безопасности.Ошибка код: SSL_ERROR_HANDSHAKE_FAILURE_ALERT