Ich verwende GlassFish Server 4.1/Java EE 7. In meiner web.xml-Datei erwähnte ich die folgende Sicherheit Einschränkungen.Uncaught SecurityError: Fehler beim Erstellen von 'WebSocket': Eine nicht sichere WebSocket-Verbindung kann nicht über eine HTTPS-Seite initiiert werden
<security-constraint>
<display-name>UserConstraint</display-name>
<web-resource-collection>
<web-resource-name>Provide a Name</web-resource-name>
<description/>
<url-pattern>/admin_side/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>ROLE_ADMIN</role-name>
</auth-constraint>
<user-data-constraint>
<description/>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Und das gleiche für andere Behörden.
Da transport-guarantee
wird auf CONFIDENTIAL
, Web-Seiten, die die angegebene URL Muster /admin_side/*
Lauf über einen sicheren Kanal (HTTPS
) entsprechen.
Bei der Verwendung von WebSockets wie folgt (JavaScript),
var ws = new WebSocket("ws://localhost:8181/Context/Push");
es scheitert eine anfängliche Handshake herzustellen. Der Browser zeigt die folgende Warnung in der Browserkonsole an.
[blocked] The page at 'https://localhost:8181/Context/admin_side/Category' was loaded over HTTPS, but ran insecure content from 'ws://localhost:8080/Context/Push': this content should also be loaded over HTTPS.
Uncaught SecurityError: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.
Wenn der <user-data-constraint>
Abschnitt von web.xml in seiner vollständig entfernt wird, Webseiten auf HTTP
laufen. Danach, Ändern
var ws = new WebSocket("ws://localhost:8181/Context/Push");
zu
var ws = new WebSocket("ws://localhost:8080/Context/Push");
funktioniert gut.
Was könnte getan werden, um WebSockets über einen sicheren Kanal arbeiten zu lassen?
Ja! Es funktionierte. Ich habe 'wss: //' vorher noch nie gesehen. Kann es bitte als Antwort hinzufügen. Vielen Dank. – Tiny
Danke! Ich fügte auch einige zusätzliche Informationen für zukünftige Referenz hinzu. – vtortola