Как сохранить активный сеанс после запроса изображения с IP-камеры через URL-адрес? (Ошибка 403 после нескольких запросов) - PullRequest
0 голосов
/ 05 апреля 2019

Я работаю с некоторыми IP-камерами (протокол HTTP), и мне нужно показать их изображения во встроенном HTML-коде в ионном приложении.Но каждый запрос к URL становился новым активным сеансом, даже если он с того же устройства.

Для этого я использую прокси-сервер CORS в NodeJS.В приложении Node, которое я использую для запроса изображения из URL предварительного просмотра камеры с учетными данными аутентификации, позже я использую метод pipe для отправки изображений с новыми заголовками.В приложении Ionic я вызываю функции с моего сервера узлов, чтобы получать изображения.Сначала все работает нормально, но проблема запускается после перезапуска приложения Ionic более 4 раз.Я знаю, что IP-камера имеет ограничение на количество активных сессий (4), но если я вызываю функции из одного и того же приложения, значит ли это, что серверу нужно сохранить или запомнить учетные данные?Каждый раз, когда я вызываю функции из приложения Ionic, это похоже на новую сессию для IP-камеры.Таким образом, после показа изображения четыре раза, запрос возврата 403, как будто я превышаю лимит активных пользователей, но проблема в том, что только один пользователь просматривает камеру.Есть ли способ решить это?Прежде всего, спасибо за ваше время и извините за мой плохой английский.

Прежде всего, мое приложение для узла было похоже на:

request.get("http://xxx.xxx.xxx.xxx/videostream.cgi?user=username&pwd=password")
   .on('error', (err) => {
      console.log(err)
   })
   .on('response', function (response) {
      console.log(response)
      delete response.headers['access-control-allow-origin'];
   }).pipe(res);

Позже я попробовал что-то вроде:

request.get("http://xxx.xxx.xxx.xxx/videostream.cgi")
   .on('error', (err) => {
      console.log(err)
   })
   .on('response', function (response) {
      console.log(response.statusCode)
      if (response.statusCode == 401) {
         request.get("http://xxx.xxx.xxx.xxx/videostream.cgi?user=username&pwd=password")
            .on('error', (err) => {
            console.log(err)
         })
         .on('response', function (response) {
            console.log(response)
            delete response.headers['access-control-allow-origin'];
         }).pipe(res);
      }else{
         delete response.headers['access-control-allow-origin'];
         return response.pipe(res)
      }
    })

Это потому, что, возможно, IP-камера может запоминать аутентификацию сервера, но всегда ошибка 401 возврата первого запроса (не аутентифицирована).Есть ли правильный способ запомнить сеанс?

Я также подумал, что одним из решений может быть выход пользователей из системы каждый раз после закрытия приложения, но я не представляю, возможно ли это по URL-адресу.

От уже большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...