Javascript 如何将webapp从cloudflare传输到https?
我没有计划将服务器安装为nginx,因此我的web应用程序是在node.js服务器上启动的。其中,类似的结构用于指代某些页面: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; 在客户端
在服务器上:
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的联系人联系
请更多地了解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端口。