2013-05-03 1 views
1

У меня есть приложение javascript/jQuery REST с API exctraction webtrends, за исключением IE.Проверка подлинности Internet Explorer REST с доменом имя пользователя

Я отправляю аутентификацию через SSL - https: // [имя домена] \ [имя пользователя]: [пароль] @ ws.webtrends.com/v3/Отчетность/профили/10609/Keymetrics /? Start_period = current_day-1 & end_period = current_day & PERIOD_TYPE = AGG & формата = JSon

Когда я смотрю внутрь инструментов разработчика (F12)> на вкладке сети, Internet Explorer изменяет обратный слеш ('\') для прямого слэша ('/') , что приводит к тому, что браузер ищет веб-сайт со значением имени домена.

Все остальные браузеры не меняют обратную косую черту.

$.ajaxSetup({ 
     crossDomain: true, 
     async: false, 
     contentType: "application/jsonp", 
     dataType: "jsonp", 
     type: "POST", 
     cache: false, 
     beforeSend: function(xhr) { 
      xhr.overrideMimeType("application/jsonp; charset=UTF-8"); 
     }, 
     headers: { 
      "Authorization": mBaseSixtyFourVar 
     }, 
     url: mXferObj.mUrl 
    }); 

    $.ajax({ 
     success: function(mInfo){   
      mRecvObj = mInfo; 
      alert(mRecvObj.data[0].measures.NewVisitors+""); 
     }, 
     error: function (xmlHttpRequest, textStatus, errorThrown) { 
      alert("xmlHttpRequest.readyState: "+xmlHttpRequest.readyState+", textStatus: "+textStatus+", errorThrown: "+errorThrown+", mXferObj.mUrl: "+mXferObj.mUrl); 
     } 
    }); 

Я попытался следующие:

Вставка это в ajaxsetup

data: "{'domain':'domainname','username':'blabla','password':'blabla'}", 

С PHP, я попытался с помощью завиток, но ничего не дал, кроме BOOL (ложь):

Я попробовал file_get_contents(), но получил ошибки открытого потока.

У меня это работает в FireFox, Opera, Safari, Chrome - почему IE всегда поддерживает до совершенства?

Любая помощь будет оценена и спасибо заранее

В соответствии с просьбой, вот один из локонов кодов, которые я пробовал:

if (!function_exists('curl_init')){ 
    die('CURL is not installed!'); 
} 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $Url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch); 
var_dump $output; 

Я попытался варианты:

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt(CURLOPT_USERPWD, '[username]:[password]') 

Так много разных вещей, которые я пробовал, это было последним

+0

Можете ли вы показать код, который вы использовали для этого, с PHP и завиток? –

+0

Обновленный код для отражения запрошенного кода curL – kronus

ответ

0

UPDATE

Учитывая Ваш комментарий о поставке имени пользователя и пароля в XMLHTTPRequest, я сделал некоторые исследования и обнаружил, что JQuery делает поддерживает эту функцию. Все вы должны сделать, это добавить username и password параметров Вашего запроса:

$.ajaxSetup({ 
    crossDomain: true, 
    async: false, 
    contentType: "application/jsonp", 
    dataType: "jsonp", 
    type: "POST", 
    cache: false, 
    beforeSend: function(xhr) { 
     xhr.overrideMimeType("application/jsonp; charset=UTF-8"); 
    }, 
    headers: { 
     "Authorization": mBaseSixtyFourVar 
    }, 
    url: mXferObj.mUrl, 
    username: "yourUsername", 
    password: "yourPassword" 
}); 

Оригинал ответ

Проще говоря, Internet Explorer не поддерживает эту функцию. Он был снят в предыдущем обновлении безопасности, опубликованном в 2004 году:

http://support.microsoft.com/kb/834489

По умолчанию версии Windows Internet Explorer, которые были выпущены начиная с выпуском обновления безопасности 832894 не поддерживают обработку имен пользователей и пароли в HTTP и HTTP с протоколами SSL (Secure Sockets Layer) или HTTPS.Следующий синтаксис URL не поддерживается в Internet Explorer или в проводнике Windows: HTTP (S): // имя пользователя: [email protected]/resource.ext

Альтернативы могут включать в себя, сделав запрос AJAX на свой собственный сервер, а затем один раз на стороне сервера выполнить запрос в управляемом коде. Например, если ваш язык выбора - C#, вы можете использовать HttpWebRequest и предоставить надлежащую информацию NetworkCredentials для заполнения запроса.

+0

Спасибо за ваш вклад. Кори и я дам вам кредит на ваш ответ, но я нашел это на том же kb - http://support.microsoft.com/kb/832414 - это это их ответ как работа вокруг – kronus

+0

@ user881083: Спасибо за продолжение. Я сделал еще несколько исследований и предоставил обновленный ответ на основе ваших отзывов. –

+0

Да, это сработает, если мне не нужно вводить имя домена \ username для имени пользователя, потому что IE меняет обратную косую черту на косую черту. Я пробовал% 5C и избегаю обратной косой черты, но ничего не работает. Еще раз, я благодарю вас за ваши отзывы – kronus

Смежные вопросы