ejabberd/XMPP 聊天服务器中的混合内容错误

Mixed Content Error in ejabberd/XMPP chat server

我的站点受 SSL 保护,当我尝试调用 XMPP 聊天服务器时显示此错误。

混合内容:位于“https://localhost:44300/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://192.168.30.1:5280/http-bind/”的页面。此请求已被阻止;内容必须通过 HTTPS 提供。

如何将 ssl 添加到 ejabberd/XMPP 聊天服务器

请帮助我,我是新手

how to add ssl to ejabberd/XMPP chat server

我认为您需要选项 tls: true 和选项 certfile: ... 尝试这样的操作:

listen:
  - 
    port: 5280
    module: ejabberd_http
    request_handlers:
      "/ws": ejabberd_http_ws
      "/bosh": mod_bosh
      "/api": mod_http_api
      "/presence": mod_webpresence
    web_admin: true
    tls: true
    certfile: "/etc/ejabberd/server.pem"

您遇到混合内容问题的原因不仅仅是因为您没有在您的 ejabberd 服务器上设置 ssl。

实际上它说的是其他问题:

  1. 您的网站已启动,并且 运行 使用 HTTPS (https://localhost:44300/)
  2. 您正试图从此 HTTPS 页面访问不安全的资源。 "not secure" 我的意思是你的 ejabberd 服务器的 HTTP 端点 (http://192.168.30.1:5280/http-bind/')

这就是您看到此问题的原因。

如何解决?

您需要通过安全端点 (HTTPS) 访问您的 ejabberd 服务器,因此您应该在您的 JS 应用程序代码中包含此 url https://192.168.30.1:5280/http-bind/

我不熟悉 jsxc,但我找到了这个入门指南 https://github.com/jsxc/jsxc/wiki/Install-jsxc#2-configure 所以你的配置应该有 HTTPS 而不是 HTTP,例如:

  xmpp: {
     url: 'https://localhost:5280/http-bind/',

在此之后,您的混合内容问题应该得到解决。

可能之后,您将面临另一个问题,即您没有为您的 ejabberd 服务器设置 SSL,但它与您的 ejabberd 服务器配置有关,而不是与您的 JS 应用程序有关。