通过letsencrypt设置https后,Nodejs聊天程序'io未定义'错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过letsencrypt设置https后,Nodejs聊天程序'io未定义'错误相关的知识,希望对你有一定的参考价值。
我在我的网站上设置了一个nodejs聊天程序。
然后,当我使用letsencrypt将网站从http移至https时,聊天程序停止工作。
这是服务器和客户端: https://synodins.com/apps/chat/server.js https://synodins.com/apps/chat/client.html 并直接读取客户端脚本: https://synodins.com/apps/chat/client.txt
问题是,你可以在客户端上看到inspect元素,就是我得到了错误: ReferenceError:未定义io
我已经搜索过这个错误,发现: socket.io - ReferenceError: io is not defined 但我已经按照他在答案中建议的方式做事。
我不确定问题是什么,虽然我怀疑在客户端加载socket.io模块有问题。
有趣的是,我可以毫无问题地在我的localhost上运行聊天,但是当我尝试在服务器上运行它时,我得到了这个错误。
谁能看出问题是什么?
所以我看了一下页面,发现了2个问题:
混合内容存在问题。使用“https”加载页面时,无法使用“http”加载文件。这是一个安全问题。
其次,我注意到JS文件的链接是http://127.0.0.1/...
,它当前指向你的本地主机。
看看上面的评论,看起来你曾经把它指向其他地方,但我建议改变标签指向同一个源文件,但在src的开头用https://...
。
以下是访问您网站时出现的错误:
Mixed Content: The page at 'https://synodins.com/apps/chat/client.html'
was loaded over HTTPS, but requested an insecure script
'http://127.0.0.1:8002/socket.io/socket.io.js'. This request has been
blocked; the content must be served over HTTPS.
在那之后,让我知道,我会进一步研究它。
编辑:
如果可以使用相对URL,则始终首选。请查看与您的问题相关的答案:https://stackoverflow.com/a/29835657/672229
在您的代码中包含此最新客户端脚本:
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>
以上是关于通过letsencrypt设置https后,Nodejs聊天程序'io未定义'错误的主要内容,如果未能解决你的问题,请参考以下文章
[web建站]-简单通过letsencrypt配置HTTPS证书
无法在Nginx服务器中使用LetsEncrypt设置HTTPS
如何将LetsEncrypt onHostRule与LetsEncrypt的Consul Catalog后端一起使用?