因为HTTPS是基于SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密,所以在HTTPS站点调用某些非SSL验证的资源时浏览器可能会阻止。比如使用ws://***调用websocket服务器或者引入类似http://***.js的js文件等都会报错。这里简述一下连接websocket服务器时的错误及解决方案。当使用ws://连接websocket服务器时会出现类似如下错误:
Mixed Content: The page at '*****' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://*****'. This request has been blocked; this endpoint must be available over WSS.
(anonymous)
Uncaught DOMException: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.
如果浏览器不阻止,那在https站点下调用ssl资源才可以,面说一下解决方案:
方案一:假设HTTPS站点使用Nginx服务器,其他服务器也是类似的思路,可以用服务器代理ws服务,可以用nginx的WebSocket proxying,简述一下配置方案
#首先将客户端请求websocket时的地址更改为wss://代理服务器url(代理服务器必须支持https) 例如
var ws = new WebSocket("wss://www.liminghulian.com/websocket");
#在代理服务器上的nginx配置文件中的server中增加如下配置项
location /websocket/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
#http中增加
upstream backend{
server websocket服务器的ip:端口;
}
这样客户端请求的是wss://服务器,通过nginx的WebSocket proxying代理到实际不支持ssl的websocket服务器。
方案二:直接为WebSocket服务器增加ssl证书,这样就可以直接通过wss://来请求服务器了,以swoole为例,其他服务器也是类似的思路,下面给出示例代码
//使用SSL必须在编译swoole时加入--enable-openssl选项
$server = new Swoole\WebSocket\Server("0.0.0.0", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
$server->set(
[
'ssl_cert_file' => '证书',
'ssl_key_file' => '/usr/local/nginx/conf/cert/214517325220006.key',
]
);
$server->on('open', function (Swoole\WebSocket\Server $server, $request) {
echo "server: handshake success with fd{$request->fd}\n";
});
$server->on('message', function (Swoole\WebSocket\Server $server, $frame) {
echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
$server->push($frame->fd, "this is server");
});
$server->on('close', function ($ser, $fd) {
echo "client {$fd} closed\n";
});
$server->start();
-
93%的夸克网盘会员推荐的安全无毒没有封闭的网站(0) 回复 (0)
-
"节约时间就是延长生命。 谚语教育!科学!学会读书,便是点燃火炬;每个字的每个音节都发射火星。出自雨果 大丈夫做事,雷厉风行。 出自李渔,对一家公司来说,99%重要的事情是胜利。另外1%是,在你赢得胜利的时候保持良好的风度。出自埃里克·施米特 生命的意义在于付出,在于给予,而不是在于接受,也不是在于争取。出自巴金 ,人生就如一台戏,它需要每一个角色,黑的、白的、红的、绿的、完整的、残缺的等等,而且缺一不可。大自然有大自然的规律,剧情和舞台也有剧情和舞台的规则,学着、分析着、吸取着、聪明着,变换着、适应着、快乐着,这才是我们演好每一个角色应持的基本态度。对一家公司来说,99%重要的事情是胜利。另外1%是,在你赢得胜利的时候保持良好的风度。出自埃里克·施米特" 福彩3D 体彩排列3 快乐8 彩票app(0) 回复 (0)
-
線上百家樂的玩家不用太快下注選擇盤口,可以待其他玩家下注的差不多時再下注(0) 回复 (0)
-
创新建设模式。深入分析师徒结对、专题任务驱动、专项课题引领、专门课程培训、模块化团队协作等做法的经验、成效和特点,聚焦落实立德树人,围绕班主任工作室定位和总体目标,坚持因地制宜、兼容并包,创新探索时代特征鲜明、职教特色明显、实际运转有效、预期成果丰富的工作室建设模式。澳洲幸运20开奖结果 福彩双色球稳赚技巧 幸运飞艇开奖直播(0) 回复 (0)
-
讨债公司/蓝月传奇辅助/蓝月辅助(0) 回复 (0)
-
websocket是htm5提供bai的一种全双工通讯的协du议。 websocket不存在跨域问题,html网页通过new Websocket(url,[protocol]);创建对zhi象。dao 看你的提示应该是使用了ajax请求。 168won福彩3D开奖结果(0) 回复 (0)
-
美要求俄就不会入侵乌克兰发表声明水泵柬埔寨血奴案泵厂家因轻信58同城招工广告,江苏男子遭胁迫偷渡至柬埔寨后,被圈养充当“血奴”一事引发关注水泵公司23岁浙江女子在柬埔寨失踪数日球阀拜登:俄或在未来几天攻击乌克兰 焊接球阀 全焊接球阀 直埋全焊接球阀 埋地全焊接球阀 泵 水泵 离心泵 上海离心泵 水泵厂 水泵厂家 泵厂家 帕特 上海水泵厂 上海水泵公司 螺杆泵 污泥螺杆泵13 上海螺杆泵 球阀厂10 Fully Welded Ball Valve all Welded Ball Valve 全焊接阀门 球阀 全焊接球阀 焊接球阀 泵厂家 泵 螺杆泵 帕特(0) 回复 (0)
-
讨债公司 搬家公司 蓝月传奇辅助(0) 回复 (0)
-
农村的单身汉变得越来越多,为什么现在娶媳妇变得如此困难呢 虽然我国近几十年发生了翻天覆地的变化,但受到了传统观念的影响,在很多方面还是不 够开放。尤其是在农村地区,结婚生子除了自身的需求外,很多时候都是为了一个家族的 繁衍和香火的延续。因此除了一些特殊的原因外,很多人在到了一定的年龄都会考虑结婚 的事情。 全焊接球阀 焊接球阀 直埋全焊接球阀 埋地全焊接球阀 离心水泵 离心泵 螺杆泵 上海离心泵 化工水泵 磁力泵 化工泵 污泥螺杆泵 上海螺杆泵 螺杆泵厂 帕特 埋地球阀 直埋焊接球阀 埋地焊接球阀 燃气焊接球阀 供暖焊接球阀 球阀 蝶阀 球阀厂 Fully Welded Ball Valve Welded Ball(0) 回复 (0)
-
农村的单身汉变得越来越多,为什么现在娶媳妇变得如此困难呢 虽然我国近几十年发生了翻天覆地的变化,但受到了传统观念的影响,在很多方面还是不 够开放。尤其是在农村地区,结婚生子除了自身的需求外,很多时候都是为了一个家族的 繁衍和香火的延续。因此除了一些特殊的原因外,很多人在到了一定的年龄都会考虑结婚 的事情。 全焊接球阀 焊接球阀 直埋全焊接球阀 埋地全焊接球阀 离心水泵 离心泵 螺杆泵 上海离心泵 化工水泵 磁力泵 化工泵 污泥螺杆泵 上海螺杆泵 螺杆泵厂 帕特 埋地球阀 直埋焊接球阀 埋地焊接球阀 燃气焊接球阀 供暖焊接球阀 球阀 蝶阀 球阀厂 Fully Welded Ball Valve Welded Ball(0) 回复 (0)