2010-03-02 2 views
2
  • У меня есть простая веб-страница с встроенным 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); 
    
  • Браузер по-прежнему вызывает аутентификации всплывающих окон и запрашивает имя пользователя и пароль для каждой камеры в отдельности!
  • Чтобы ухудшить положение, изображения, отображаемые с камеры, заморожены и устарели (с прошлой ночи).
  • Как я могу обойти проверку подлинности браузера?

ответ

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 (обратите внимание на завершающее пространство) в вашу собственность.

+0

Видимо, нет. Я вижу, вы это исправили! – Vinnie

+0

Спасибо, Винни, но я уже делал это (я знаю, что ты не мог узнать о моем коде). Мое решение, размещенное выше, работало! – Warlax