kết nối socket.io từ https



  • Xin chào
    Mình có viết 1 ứng dụng nho nhỏ để chat bằng socket.io. Khi emit từ http thì ok không sao cả nhưng khi mình emit https thì soket io ko ho he gì luôn.
    he page at 'https://abc.com' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://xxx.xxx.xxx.xx:3001/socket.io/?EIO=3&transport=polling&t=LkoP3bV'. This request has been blocked; the content must be served over HTTPS.



  • bạn thử set
    io.set('match origin protocol', true);

    io.set('origins', ':');

    io.set('log level', 1);



  • tks bạn để mình thử xem sao :D



  • Option match origin protocol is not valid. Please refer to the README.
    Option log level is not valid. Please refer to the README.
    Nó báo thế này là sao nhỉ bạn có thể giải thích rõ hơn cho mình về các dòng lệnh đó k mình cảm ơn



  • Bạn đang dùng cloud app hay là VPS
    nếu dùng VPS có dùng nginx hay ko



  • Mình dùng vps nhưng chạy console thôi vì đang thử nghiệm phải cài nginx lên ak bạn



  • ở đây 'http://xxx.xxx.xxx.xx:3001 của bạn là http vì vậy nó bị mixed content với thằng HTTPS của https://abc.com
    Bạn cần phải chuyển http://xxx thành https


  • Sailor

    Muốn emit được từ https thì bạn cần chuyển socket sang chạy https để không bị block, ngoài ra khi khai báo ở client cũng thêm khai báo hỗ trợ ssl nữa là được nhé

    socket = io.connect('https://[socket server của bạn] ', {secure: true});



  • Với socket và SSL (dùng letsenscrypt) và nginx

    # API
    server {
       listen 80;
       server_name [DOMAIN];
       location / {
         return 301 [DOMAIN]$request_uri;
       }
    }
    
    server {
            listen 443 ssl;
            server_name [DOMAIN];
            ssl_certificate /etc/letsencrypt/live/[DOMAIn]/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/[DOMAIN]/privkey.pem;
            ssl_session_timeout 5m;
            ssl_session_cache  shared:SSL:10m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-$
            ssl_prefer_server_ciphers on;
            add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
            ssl_stapling on;
    
            location / {
                    proxy_pass http://127.0.0.1:3000;   #NODE.JS SERVER
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection 'upgrade';
                    proxy_set_header Host $host;
                    proxy_cache_bypass $http_upgrade;
            }
    }
    


  • @kiddev29 said in kết nối socket.io từ https:

    Muốn emit được từ https thì bạn cần chuyển socket sang chạy https để không bị block, ngoài ra khi khai báo ở client cũng thêm khai báo hỗ trợ ssl nữa là được nhé

    Tks a em chuyển qua https đc rồi :D


Log in to reply