如何将 webapp 从 cloudflare 传输到 https?

How to transfer a webapp to https from the 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;

客户端:

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什么时候报这样的错误:

xhr.js:178 Mixed Content: The page at 'https://example.com/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://1.2.3.4/api/bonds'. This request has been blocked; the content must be served over HTTPS.

如何解决?

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

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

  1. 浏览器和cloudfare之间的连接是不是https?如果它已经是 https 那么 CA 证书是否已经是 browser/system 的一部分,或者我们是否需要显式加载它。
  2. cloudflare 和 node.js 服务器之间的连接如何 - 它是否加密...如果它是加密的那么你还必须加载 node.js 服务器的证书或 cloudflare 服务器的证书进入彼此的信任库。这将取决于它是否是双向 TLS。如果它是 cloudfare 和 node.js 服务器之间的 http 流量,则不需要证书。

请进一步了解 https/SSL 握手过程,以便更加清晰。