https中的Websocket连接问题

问题描述:

Websocket连接在http中起作用,但在https中不起作用。https中的Websocket连接问题

收到错误消息为“失败:WebSocket握手期间出错:'升级'标头丢失”。

请帮助,如果您有您的插座通信通过反向代理来解决这个问题

检查。

如果您使用nginx的,你可以使用下面的配置 - 摘录在您的位置标签:(source)

location/{ 
    proxy_pass http://app; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
} 

如果您使用球童,你可以使用下面的配置 - 摘录:(source)

proxy/http://app { 
    transparent 
    header_upstream X-Forwarded-Ssl on 
} 
+0

感谢您的信息。我在Amazon AWS linux环境中使用Apache webserver和PHP。 – user3178593

+0

我正在使用下面的代码。请帮助解决问题。 //握手新客户端。 $ secKey = $ headers ['Sec-WebSocket-Key']; \t $ secAccept = base64_encode(pack('H *',sha1($ secKey。'258EAFA5-E914-47DA-95CA-C5AB0DC85B11'))); \t //握手标头 \t $ upgrade =“HTTP/1.1 101 Web Socket协议握手\ r \ n”。 \t“升级:websocket \ r \ n”。 \t“连接:升级\ r \ n”。 \t“WebSocket-Origin:$ host \ r \ n”。 \t“WebSocket-Location:wss:// $ host:$ port/demo/shout.php \ r \ n”。 “Sec-WebSocket-Accept:$ secAccept \ r \ n \ r \ n”; \t“ \t socket_write($ client_conn,$ upgrade,strlen($ upgrade)); – user3178593

+0

你为什么要手动添加标题?我不知道apache,但通常会自动写入标题,不是吗?通常你会在反向代理上操作标题,这可能会导致类似你的错误 – samprog