Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: socket.io połączenie z domeną https
Forum PHP.pl > Forum > Po stronie przeglądarki
dvdx95
Cześć, nie mogę poradzić sobie jak rozwiązać ten problem

Mianowicie serwer.js jest postawiny na http, domena ma certyfikat https:

wie ktoś jak nawiązać po stronie domeny albo jak skonfigurować połączenie aby nie wywalało błędu "mixed content was loaded over https but requested an insecure xmlhttprequest endpoint"

server.js
  1. var app = require('express')();
  2. var http = require('http').Server(app);
  3. var io = require('socket.io')(http);
  4. var port = process.env.PORT || 3000;
  5. var users = 0;
  6.  
  7. app.get('/', function(req, res){
  8. res.sendFile(__dirname + '/www/socket.io/index.html');
  9. });
  10.  
  11. io.on('connection', function(socket){
  12. console.log('a user connected');
  13. socket.on('disconnect', function(){
  14. console.log('user disconnected');
  15. });
  16. });


po stronie index.html

  1. var socket = io('http://localhost:3000/',);


W jaki sposób zrobić tutaj połączenie najlepiej na https://domena.com:3000 ?

Może ktoś nakieruje

jakoś udało mi się to ogarnąć, połączenie mam z tym że serwer nie ma komercyjnego certyfikatu ssl i z tym trochę lipa biggrin.gif
hondek
Nie ma możliwości ładowania na stronie z SSL'em plików pochodzących z http://, właśnie o to w tym wszystkim chodzi, żeby nie było odwołań do niezabezpieczonych źródeł. Tak więc źródło również musi mieć https:// nie da się tego obejść.
dvdx95
Tak to już ogarnołem, zrobiłem sobie ssl na serwerze z tym że wiadomo nie są to komercyjne więc łącząc się z https mam połączenie niezabezpieczone :/

hondek
Prawdopodobnie dlatego masz niezabezpieczone, że ładujesz jakieś treści z http://, a to powoduje że połączenie nie jest bezpieczne. Cały content musisz miec na https://, wystarczy jeden obrazek na http, albo JS CSS cokolwiek i wszystko staje sie niezabezpieczone.
dvdx95
nie chodzi o to

tworze połączenie ze swoim serwerem który ma cert ssl ale stworzony przezemnie tzn, moge łączyc się po https natomiast przeglądarka rozpozna to jako niezabezpieczone https bo nie mam komercyjnego certa na serwerze tylko na domenie.

z tego co rozumiem , to nie maja komercyjnego certa na serwerze nie połączę się po zabezpieczonym https z domeną
by_ikar
@ dvdx95 - aby móc nasłuchiwać szyfrowanych połączeń, musisz użyć odpowiedniego liba, w tym przypadku zamiast http, musisz użyć https i podać mu ścieżki do certyfikatów: https://nodejs.org/api/https.html#https_htt...requestlistener

Działa to identycznie jak w każdym jednym serwerze http, jak potrzebujesz w nginxie https'a to musisz podłączyć certyfikaty i połączenie na danym porcie oznaczyć jako ssl; identycznie w przypadku apache czy jakiegokolwiek innego serwera/proxy/reverse proxy.

Nie można podłączyć pod domenę certyfikatu, domena to jest tylko informacja o którą przeglądarka odpytuje serwer dns, który dopiero zwraca właściwy adres serwera. Dla przykładu dla domeny google:

Kod
dig +noall +answer google.com


Powinno zwrócić ci coś takiego:

Kod
google.com.        297    IN    A    172.217.20.206


Wówczas przeglądarka wie że ma wysyłać żądania do serwera pod tym adresem IP.

Certyfikaty podłącza się pod serwery http, które szyfrują przesyłane informacje za pomocą tego certyfikatu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.