Страницы: 1
У меня после установки появилась панель внизу окна с написью <key id="key_openHelp">.
Чтобы это значило? :/
Ну что же, сам спросил, сам и отвечаю.
Все дело в переводе из Unicode16 в ASCII. После того как логин и пароль к прокси-серверу были введены FireFox перевод их в Unicode (он называет его UTF16). А перед отправлением на прокси-сервер переводит обратно в ASCII, но не верно!!! Он просто берет младшую часть Unicode! Для английских букв это не важно их Unicode имеет 0 в старшей части, а вот русские буквы превращаются в какую-то ерунду.
Пример преобразования букв ASCII->Unicode->ASCII
Char ASCII Unicode ASCII
А 0xC0 0x0410 0x10
Б 0xC1 0x0411 0x11
В 0xC2 0x0412 0x12
A 0x41 0x0041 0x41
B 0x42 0x0042 0x42
C 0x43 0x0043 0x43
Для знатоков скажу, что это происходит в mozilla\netwerk\protocol\http\src\nsHttpBasicAuth.cpp
Функция называется nsHttpBasicAuth::GenerateCredentials
[b]// we work with ASCII around here
nsCAutoString userpass;
(user, userpass);
userpass.Append(':')
У меня выход в Интернет происходит через прокси-сервер. На этом прокси-сервере стоит UserGate 2.8. Логины пользователей – это фамилии русскими буквами + инициалы. В UserGate настроена HTTP-авторизация.
Проблема в том, что при выходе в Интернет выскакивает окно, в котором надо ввести логин и пароль доступа. Если логин содержит только английские буквы ни каких проблем, а если русские, то авторизация не происходит и окошко выскакивает еще раз.
В IE все работает и английскими и с русскими буквами.
Я пробовал ставить у себя UserGate v2.8, v4.0, v4.1 и проверял с помощью IE, FireFox v1.0, v1.5, v2.0b2. Результат один и тот же: в IE все работает, а в FireFox нет. :cry:
Что делать? Очень хочется пользоваться FireFox не только дома, но и на работе.
Буквы "а" и "б" я привел для примера показать, что код русских букв у IE и FireFox отличается ровно на 0xB0.
Авторизация на прокси сервере выглядит так:
Запрашивается у пользователя логин и пароль ( к пример это будут "логин" и "пароль" соотвественно)
Формируется строка "логин:пароль"
Строка кодируется с помощью BASE64, получиться 6+7j6O067+Dw7uv8==
А вот FireFox выдает строку как будто из каждого русского символа строки "логин:пароль" вычли 0xB0, а потом
преобразовали с помощью BASE64.
Выход в интернет у меня через прокси-сервер, на прокси стоит UserGate.
Логин на этот прокси - это мое имя русскими буквами. При заходе на прокси через IE все нормально, а вот через FireFox не получается, логин и пароль не принимаются.
Запустил сниффер, посмотрел в чем разница.
IE передает логин в обычной кодировке Windows,
а FireFox в какой-то другой
Символ IE FireFox
а 0xE0 0x30
б 0xE1 0x31
и т.д.
Чтобы это могло быть? Как с этим бороться? Патчить код FireFox, чтобы он кодировал правильно или есть возможность настройки?
Страницы: 1