Javascript Websocket 400 Ошибка при подключении к обратному прокси-серверу Apache через JavaFX WebView с токеном - PullRequest
0 голосов
/ 04 января 2019

У меня есть JavaFX WebView, движок которого настроен на добавление токена в заголовок для аутентификации.

WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
webEngine.setUserAgent("foo\nAuthorization: Bearer " + token);
webEngine.load("https://hostname/app");

Насколько я понимаю, этот подход довольно хакерский, так как он в основном притворяется, что добавляет User-Agent, но в действительности вводит новое поле заголовка Authorization.

мой WebView направляет через обратный прокси-сервер Apache на мою размещенную веб-страницу.

<Location "/app">
    ProxyPass https://localhost:8450/app
    ProxyPassReverse https://localhost:8450/app
    RequestHeader set VirtualUrl "/app"
</Location>

<Location "/app/ws">
    ProxyPass  wss://localhost:8451/events
    ProxyPassReverse  wss://localhost:8451/events
</Location>

Затем пытается установить JavaScript на моей веб-страницесоединение WebSocket, которое снова маршрутизируется через обратный прокси

this.websocket = new WebSocket('wss://hostname/app/ws');

Это соединение WebSocket прекрасно работает, когда выполняется через браузер, однако при попытке через WebView консоль WebView выдает:

WebSocket connection to 'wss://hostname/app/ws' failed: Unexpected response code: 400[at 0]

При отслеживании этого соединения в моих журналах apache я заметил следующую ошибку:

(22)Invalid argument: [client xx.x.xx.xxx:xxxxx] Failed to read request header line User-Agent: foo

На данный момент я предполагаю, что моя конфигурация WebView шлепает заголовок User-Agent нак моему запросу на соединение через веб-сокет, и мой обратный прокси задыхается от него.

Веб-страница загружается простоНе минус WebSocket не подключается, поэтому заголовок авторизации работает.Однако способ его внедрения конфликтует с моими запросами WebSocket.

В первую очередь я ищу то, есть ли лучший (не хакерский) способ передачи маркера заголовка с помощью WebView.Или, если есть способ настроить мой обратный прокси-сервер, чтобы понять, что означает эта строка заголовка.

...