Это типичная проблема, связанная с политикой того же происхождения, и ее можно исправить двумя способами:
- Взлом IP-камеры и размещение там HTML-страниц.
- Перемещениекод HTTP-запроса к IP-камере с веб-страницы на Java-сервер и, таким образом, избегает ограничения политики одного и того же источника.
Обычно 2-й способ лучше, особенно когда вы можетепоставить Java-сервер в одной локальной сети с IP-камерой.Вот несколько подробных описаний:
- Размещение HTML-страницы и кода JavaScript на сервере Java (я полагаю, вы уже сделали это).
- Когда пользователь нажмет кнопку на веб-странице, отправьтеЗапрос Ajax к серверу Java, а не к IP-камере.Таким образом, избегайте проблемы с тем же источником.
- Когда Java-сервер получает указанный выше HTTP-запрос, интерпретирует пользовательскую операцию и отправляет соответствующий HTTP-запрос на IP-камеру.Поскольку это чистый HTTP-запрос на стороне сервера, он не следует политике одного и того же источника.
- После того, как сервер Java получит ответ от IP-камеры, верните этот ответ браузеру.
Кстати, в приведенном выше сценарии сервер Java берет на себя роль прокси.
Для некоторых ваших вопросов:
"Я провел некоторые исследования этого, но решенияпохоже, больше подходит для серверов. "
- Да, политика CORS - это функция браузера для защиты.Чтобы решить эту проблему, вам нужно что-то сделать на сервере.
"Я разместил свою HTML-страницу в той же локальной сети, чтобы обойти это, но это не сработало. Я удивлен, что этоне распознается как один и тот же домен. "
- чтобы сделать 2 URL-адреса одним доменом (с точки зрения CORS), следующая часть URL-адреса должна быть идентичной: протокол, имя хоста и порт.Перемещение 2 машин в одну и ту же локальную сеть не удовлетворяет политике одного и того же источника для браузера.
"Я также не уверен, почему браузер может сделать этот запрос на получение, но сценарий Java не. "
- Когда вы вводите URL-адрес IP-камеры в адресную строку браузера и нажимаете return, на камеру отправляется простой обычный запрос HTTP GET, политика того же источника не применяется.Однако при отправке HTTP-запроса из кода JavaScript браузер проверяет настройки CORS по соображениям безопасности.