У меня проблема с приложением, которое связывается с Ajax, чтобы потреблять некоторые успокоительные услуги с другого сервера.CORS с IE, XMLHttpRequest и ssl (https)
Проблемные швы, которые появляются только с IE, и когда потребляющее приложение находится на сервере с ssl, я имею в виду, когда я использую одни и те же услуги с одного и того же сервера из другого окна, все работает нормально.
Я на успокоительных услуги на сервере (https://api.restbla/..), которые имеют SSL и Я потреблять их от других серверов (с или без сертификата SSL)
Тестирование с помощью Internet Explorer, я получаю результаты:
- Если я потребляю услуги от моих местных работ
- Если я потребляю услуги из тех же коробков (где успокоительные являются размещенными) работает
- Если я использую услуги с другого сервера с работами ssl
- Но когда я использую службы с сервера на https, не работайте над IE.
Все предварительная тестовой работы с Chrome и FF
Это Javascript, что им с помощью, чтобы сделать Аякс позвонить
function load(_url, _callback, _params, _type, _htmlMethod, _onStartFunction, _onFinishFunction) {
var xhr;
if (isFunction(_onStartFunction)) { _onStartFunction(); }
ieVersion = getInternetExplorerVersion();
if (typeof XMLHttpRequest !== 'undefined') {
console.log("XMLHttpRequest");
xhr = new XMLHttpRequest();
}else {
if (ieVersion > 7){
console.log("XDomainRequest");
xhr = new XDomainRequest();
}else{
var versions = [ "MSXML2.XmlHttp.5.0", "MSXML2.XmlHttp.4.0", "MSXML2.XmlHttp.3.0", "MSXML2.XmlHttp.2.0", "Microsoft.XmlHttp" ];
for (var i = 0, len = versions.length; i < len; i++) {
try {
console.log("ActiveXObject: " + versions[i]);
xhr = new ActiveXObject(versions[i]);
break;
} catch (e) { /* attempt next one*/ }
}
}
}
xhr.onreadystatechange = ensureReadiness;
if (_type == JSON_TYPE) {
contentType = "application/json";
}else{
contentType = 'text/plain';
}
function ensureReadiness() {
if (xhr.readyState < 4) { return; }
if (xhr.status !== 200) {
showServiceDown();
if (isFunction(_onFinishFunction)) { _onFinishFunction();}
return;
}
if (xhr.readyState === 4) {
if (isFunction(_onFinishFunction)) {_onFinishFunction(); }
var responseText = "";
responseText = xhr.responseText;
if (_type == JSON_TYPE) {
_callback(responseText);
} else if (_type = HTML_TYPE) {
var replaced = responseText.replace(/\\/g, '///');
_callback(replaced);
} else { _callback(responseText); }
}
}
if ((_htmlMethod == undefined) || (_htmlMethod == null) || (_htmlMethod == "")) {
_htmlMethod = METHOD_POST;
}
xhr.open(_htmlMethod, _url, true);
xhr.withCredentials = true;
xhr.setRequestHeader("Content-type", contentType);
_params = (_params != undefined) ? _params : null;
xhr.send(_params);
}
Я не могу использовать любого яваскрипт рамки для этого проекта ,
сертификаты являются меридиональными для компании только для внутреннего использования, поэтому любая ошибка проверки браузера терпит неудачу, я не знаю, связано ли это с проблемой.
Надеюсь, у кого-нибудь есть решение этой проблемы.
большое спасибо за ваше время.
Я пробовал и работал как техника его подводит: S .. Я заметил, что, когда в интернете Свойства проводника-> безопасность-> Параметры безопасности Я выбираю источники доступа к данным по доменам в качестве разрешения, .. он работает на IE .. – cesaregb
@cesaregb Я добавил пример кода, который работал для меня в прошлом – paislee
на самом деле, который работал. используйте XDomainRequest для IE и добавьте onprogress и onload прослушиватели ... черт с IE спасибо большое – cesaregb