- У меня есть простая веб-страница с встроенным Java-апплетом .
- апплет делает HTTP звонки на различные оси камер, которые все одни и те же аутентификации (например, имя пользователя, пароль ).
- Я передаю имя пользователя и пароль для кода Java после запуска апплета - никаких проблем.
- Когда я запускаю из NetBeans с помощью апплета, я получаю полный доступ к камерам и смотрю потоковое видео - точно так же, как рекламируется.
- Проблема начинается, когда я открываю HTML-страницу в веб-браузере (Firefox).
Даже если мой код обрабатывает аутентификации:Обход встроенной аутентификации браузера при выполнении HTTP-вызовов из встроенного апплета
URL u = new URL(useMJPGStream ? mjpgURL : jpgURL); huc = (HttpURLConnection) u.openConnection(); String base64authorization = securityMan.getAlias(this.securityAlias).getBase64authorization(); // if authorization is required set up the connection with the encoded // authorization-information if(base64authorization != null) { huc.setDoInput(true); huc.setRequestProperty("Authorization",base64authorization); huc.connect(); } InputStream is = huc.getInputStream(); connected = true; BufferedInputStream bis = new BufferedInputStream(is); dis= new DataInputStream(bis);
- Браузер по-прежнему вызывает аутентификации всплывающих окон и запрашивает имя пользователя и пароль для каждой камеры в отдельности!
- Чтобы ухудшить положение, изображения, отображаемые с камеры, заморожены и устарели (с прошлой ночи).
- Как я могу обойти проверку подлинности браузера?
2
A
ответ
0
Фиксированный
Я добавил следующие строки:
huc.setDoOuput(true);
huc.setUseCaches(false);
после того, как линии
huc.setDoInput(true);
.
0
При работе в браузере выключен base64authorization
Не верно установлено?
Я не совсем уверен, что должен вернуть getBase64authorization
, но я уверен, что когда вы вызываете huc.setRequestProperty("Authorization", **autorization value**)
, он ищет базовое значение аутентификации HTTP. Значение **authorization value**
должно быть в формате Basic **base 64 encoding of username:password**
, как описано here.
Возможно, вам просто нужно добавить строку Basic
(обратите внимание на завершающее пространство) в вашу собственность.
Видимо, нет. Я вижу, вы это исправили! – Vinnie
Спасибо, Винни, но я уже делал это (я знаю, что ты не мог узнать о моем коде). Мое решение, размещенное выше, работало! – Warlax