Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将webapp从cloudflare传输到https?_Javascript_Ssl_Https_Cloudflare - Fatal编程技术网

Javascript 如何将webapp从cloudflare传输到https?

Javascript 如何将webapp从cloudflare传输到https?,javascript,ssl,https,cloudflare,Javascript,Ssl,Https,Cloudflare,我没有计划将服务器安装为nginx,因此我的web应用程序是在node.js服务器上启动的。其中,类似的结构用于指代某些页面: 在服务器上: if(process.env.NODE_ENV === 'production') { app.use('/', express.static(path.join(__dirname, '../', 'client', 'dist'))) } app.use('/api/bonds', bonds); const port = 80; 在客户端

我没有计划将服务器安装为nginx,因此我的web应用程序是在node.js服务器上启动的。其中,类似的结构用于指代某些页面:


在服务器上:

if(process.env.NODE_ENV === 'production') {
    app.use('/', express.static(path.join(__dirname, '../', 'client', 'dist')))
}
app.use('/api/bonds', bonds);
const port = 80;
在客户端:

const url = '1.2.3.4:80/api/bonds';
class BondsService {
    static getBonds() {
        return new Promise(async (resolve, reject) => {
            try {
                const res = await axios.get(url);
                const data = res.data;
                resolve(data.map(bond => ({
                    ...bond
                })));
            } catch (e) {
                reject(e);
            }
        })
    }
我将我的域转移到cloudflare,并将免费SSL证书设置为灵活模式。当我通过http访问应用程序时,一切正常,但http何时会出现这样的错误:

js:178混合内容:页面位于'https://example.com/'已通过HTTPS加载,但请求了不安全的XMLHttpRequest终结点'http://1.2.3.4/api/bonds'. 此请求已被阻止;内容必须通过HTTPS提供

您如何修复它?

我们在聊天中进行了广泛(一小时)的讨论,我不知道如何在此处完全引用聊天。因此,我只是发布了一个解决方案,它可以帮助您朝着正确的方向前进:

如果您是组织的一部分,那么您首先必须与Cloudflare团队或infra的联系人联系

  • 浏览器和cloudfare之间的连接是否为https?如果它已经是https,那么CA证书是否已经是浏览器/系统的一部分,或者我们是否需要显式加载它
  • cloudflare和node.js服务器之间的连接如何?是否加密?如果加密,则还必须将node.js服务器或cloudflare服务器的证书加载到彼此的信任存储中。这将取决于是否为相互TLS。如果cloudfare和node.js服务器之间是http通信,则不需要证书


  • 请更多地了解https/SSL握手过程,以获得更清晰的信息。

    理想情况下,端口80用于http。你能试着不使用这个端口吗?@rootkonda谢谢你的评论,你建议使用端口443还是其他任何端口?这个服务在哪里运行?如果它在example.com上运行,则只需使用,如果没有,则首先检查1.2.3.4计算机中为https设置的端口并使用该端口。@rootkonda该服务在VPS服务器上运行,并且服务器内的所有呼叫都是由服务器的ip(1.2.3.4)独占的,而不是由域名独占的,而且服务器上安装了防火墙,当然,所有必要的端口都是开放的。工作方案是vps->cloudflare->domain provider->clientOk。如果443不起作用,请检查1.2.3.4上设置的https端口。