2

我正在 glassfish 4.0 中开发一个 websockets 应用程序。不使用 SSL 时一切正常,但使用 SSL 时我无法正常工作。


我使用带注释的 Java 对象作为服务器:

@ServerEndpoint("/websocket/{sessionID}")
public class WebSocketServerEndPoint {...}

在客户端,我使用以下 javascript:

var webSocket = new WebSocket('wss://domain.com:8181/websocketserver/websocket/sessionXXX');

在部署描述符 web.xml 中,我有一些东西可以确保无法通过 ssl 以外的其他方式访问应用程序:

<security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected resource</web-resource-name>
            <url-pattern>/*</url-pattern>
            <http-method>GET</http-method>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

    <!-- deny all methods other than GET in all url -->
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>protected</web-resource-name>
            <url-pattern>/*</url-pattern>
            <http-method-omission>GET</http-method-omission>
        </web-resource-collection>
        <auth-constraint/>
    </security-constraint>

我通过访问 index.html 测试页面测试了 https,它显示正确。

https://domain.com:8181/websocketserver/index.html

关于为什么使用 websockets 时 ssl 不起作用但使用 https 时工作正常的任何想法?

4

0 回答 0