>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Firefox http://forum.mozilla-russia.org/viewforum.php?id=4 >Проблемы при авторизации в UserGate http://forum.mozilla-russia.org/viewtopic.php?id=12379 |
Dima_0 > 07-09-2006 19:31:53 |
У меня выход в Интернет происходит через прокси-сервер. На этом прокси-сервере стоит UserGate 2.8. Логины пользователей – это фамилии русскими буквами + инициалы. В UserGate настроена HTTP-авторизация. Я пробовал ставить у себя UserGate v2.8, v4.0, v4.1 и проверял с помощью IE, FireFox v1.0, v1.5, v2.0b2. Результат один и тот же: в IE все работает, а в FireFox нет. |
Dima_0 > 08-09-2006 19:16:19 |
Ну что же, сам спросил, сам и отвечаю. Все дело в переводе из Unicode16 в ASCII. После того как логин и пароль к прокси-серверу были введены FireFox перевод их в Unicode (он называет его UTF16). А перед отправлением на прокси-сервер переводит обратно в ASCII, но не верно!!! Он просто берет младшую часть Unicode! Для английских букв это не важно их Unicode имеет 0 в старшей части, а вот русские буквы превращаются в какую-то ерунду. Пример преобразования букв ASCII->Unicode->ASCII Char ASCII Unicode ASCII A 0x41 0x0041 0x41 Для знатоков скажу, что это происходит в mozilla\netwerk\protocol\http\src\nsHttpBasicAuth.cpp Функция называется nsHttpBasicAuth::GenerateCredentials // we work with ASCII around here LossyCopyUTF16toASCII(user, userpass); LossyAppendUTF16toASCII(password, userpass); // plbase64.h provides this worst-case output buffer size calculation. memcpy(*creds, "Basic ", 6); Как очевидно из названия функция преобразует с потерями. Ну вот, ошибка найдена. Как мне теперь сообщить об этом разработчикам? Если учесть, что английский я очень плохо знаю, еле-еле читать получается. |
Unghost > 09-09-2006 03:41:23 |
Dima_0
https://bugzilla.mozilla.org/enter_bug.cgi?product=Core |