web-dev-qa-db-fra.com

Spring WebSocket: la prise de contact a échoué en raison d'un en-tête de mise à niveau non valide: null

J'utilise wss (sockets Web sécurisés) avec ressort de backend et STOMP pour le client javascript.

Est-ce que quelqu'un sait pourquoi obtenir:

Handshake failed due to invalid Upgrade header: null
17
mspapant

J'ai rencontré le même problème avec le proxy https nginx pour Tomcat. En effet, je n'ai pas pris en charge la demande wss. Pour prendre en charge la demande wss, j'utilise la configuration comme ci-dessous:

# WebSocketSecure SSL Endpoint
#
# The proxy is also an SSL endpoint for WSS and HTTPS connections.
# So the clients can use wss:// connections 
# (e.g. from pages served via HTTPS) which work better with broken 
# proxy servers, etc.

server {
    listen 443;

    # Host name to respond to
    server_name ws.example.com;

    # your SSL configuration
    ssl on;
    ssl_certificate /etc/ssl/localcerts/ws.example.com.bundle.crt;
    ssl_certificate_key /etc/ssl/localcerts/ws.example.com.key;

    location / {
        # switch off logging
        access_log off;

        # redirect all HTTP traffic to localhost:8080
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $Host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # WebSocket support (nginx 1.4)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
23
Jonguo

Enfin, j'ai trouvé la solution.

J'ai dû ouvrir un port https dans Tomcat pour gérer les demandes wss.

0
mspapant