onlyoffice使用Https访问

开发服务器用的是http,一切正常使用,部署到服务器后,由于服务器使用了Https,导致访问onlyoffice时控制台报错。Mixed Content: The page at 'http://xxxxx//' was loaded over HTTPS, but requested an insecure frame 'http://xxxxx//'.

This request has been blocked; the content must be served over HTTPS.

主要原因是https链接中嵌套了http的资源导致报错,我的onlyoffice部署在docker容器中,如果配置证书什么的,看着还是挺麻烦的。

最简单的办法就是在网页中增加一句代码:

复制代码
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

我用的是官方给的nodejs源码,所以在views/editor.ejs中增加即可。

页面可以正常打开了,但查看网页源代码,发现callback等需要回调地址仍然是http,所以修改docManager.js修改getServerHost函数,我直接把协议名写死了:

复制代码
DocManager.prototype.getServerHost = function getServerHost() {
  return `https://${this.req.headers['x-forwarded-host'] || this.req.headers.host}`
    + `${this.req.headers['x-forwarded-prefix'] || ''}`;
};

但使用中发现问题,文档在线编辑后,没有将文档数据回写到word实体文件中,肯定是回调过程出现了问题,而且从日志中也发现了,onlyoffice在访问/track回写数据时,会自动传过来服务器的url,发现是http,所以修改app.js的这个位置:

复制代码
} else if (bodyTrack.status === 2 || bodyTrack.status === 3) { // MustSave, Corrupted

将返回来的bodyTrack变量修改一下:

复制代码
bodyTrack.url = bodyTrack.url.replace("http", "https");
if (bodyTrack.hasOwnProperty('changesurl')) {
    bodyTrack.changesurl = bodyTrack.changesurl.replace("http", "https");
}

由于我的文档存储路径为了较深的目录,目录层级比较多,为了让创建文档的时候自动创建多级目录,可以修改docManager.js的createDirectory:

复制代码
DocManager.prototype.createDirectory = function createDirectory(directory) {
  if (!this.existsSync(directory)) {
    // 创建多级目录,增加了{ recursive: true }参数
    fileSystem.mkdirSync(directory, { recursive: true });
    //fileSystem.mkdirSync(directory);
  }
};

参考:

This request has been blocked; the content must be served over HTTPS._onlyoffice this request has been blocked; the cont-CSDN博客

相关推荐
Filotimo_1 小时前
桥接服务概念
网络协议·网络安全·信息与通信
镜中人★1 小时前
408计算机网络考纲知识点(更新中)
网络·网络协议·计算机网络
禾叙_3 小时前
【netty】Netty之TCP链接
网络·网络协议·tcp/ip
半路_出家ren3 小时前
17.python爬虫基础,基于正则表达式的爬虫,基于BeautifulSoup的爬虫
网络·爬虫·python·网络协议·正则表达式·网络爬虫·beautifulsoup
栗子叶3 小时前
SSE、长轮询与 WebSocket 连接资源对比及 Spring Boot 配置指南
spring boot·websocket·网络协议
徐子童3 小时前
网络协议---TCP协议
网络·网络协议·tcp/ip·面试题·1024程序员节
还在忙碌的吴小二4 小时前
XXL-RPC 框架使用手册
网络·网络协议·rpc
softshow10264 小时前
Vue3 :封装 WebRTC 低延迟视频流与 WebSocket 实时状态驱动的大屏可视化
websocket·网络协议·webrtc
寻星探路4 小时前
【深度长文】深入理解网络原理:TCP/IP 协议栈核心实战与性能调优
java·网络·人工智能·python·网络协议·tcp/ip·ai
上海云盾-高防顾问12 小时前
中小企业低成本渗透测试实操指南
网络协议·web安全·网络安全