onlyoffice关于callback的问题?

首先我们本地部署了onlyoffice社区版,比如服务是192.168.1.1
然后我们的项目中(后端服务192.168.1.2),前端调用onlyoffice skd 192.168.1.1/web-apps/apps/api/documents/api.js

这时候前端能正常渲染docx文件,但是保存的时候需要配置callback
我的配置如下:

const editorConfig = {
      documentType: 'word',
      document: {
        fileType: 'docx',
        key: `document-${userStore.getUserInfo.id}-${Date.now()}`, // 生成唯一文档标识
        title: '测试',
        url: 'http://x.x.x.x/other/c63e332a-4467-45c2-bda4-55d296df15e5MBTI职业性格测试(题目解析都有)_1737339368991.docx', // 指向新文档的 URL
        info: {
          owner: '王阳明',
        },
        permissions: {
          copy: false,
          download: false,
          edit: true,
          print: false,
        },
      },
      editorConfig: {
        callbackUrl: `http://192.168.1.2/jeecg-boot/IndexServlet/documentWorks`,
        events: {
          onRequestSave: () => {
            console.log('保存请求已发送')
          },
        },
        lang: 'zh-CN',
        region: 'CN',
        user: {
          id: userStore.getUserInfo.id,
          name: userStore.getUserInfo.realname,
        },
        mode: 'edit',
        customization: {
          autosave: false,
          close: {
            visible: false,
            text: 'Close file',
          },
          toolbar: false,
          compactToolbar: false,
          uiTheme: 'theme-dark',
        },
      },
    }

这时候后端没收到请求,前端也确实没看到后发送请求,请问哪里有问题,我的需求就是能保存成功

同时,配置了callback之后,打开word文件等一会,会报一个错
image.png

阅读 414
avatarAI BotBETA

回答

您的问题可能涉及几个方面,以下是一些可能的解决方案和检查点:

  1. CORS(跨源资源共享)问题

    • 确保 OnlyOffice 服务器(192.168.1.1)允许来自您的后端服务(192.168.1.2)的跨域请求。您需要在 OnlyOffice 服务器的配置中设置适当的 CORS 策略。
    • 检查 OnlyOffice 的 documentserver-config.json 文件或相应的配置文件中是否有关于 CORS 的设置,并确保允许从 192.168.1.2 发起的请求。
  2. Callback URL 配置

    • 确保 callbackUrl 正确配置,并且后端服务(192.168.1.2)上的 /jeecg-boot/IndexServlet/documentWorks 路径能够正确处理来自 OnlyOffice 的回调请求。
    • 验证后端服务是否有日志记录或调试工具,可以捕获和处理来自 OnlyOffice 的回调请求。
  3. 网络问题

    • 检查网络设置,确保没有防火墙或路由规则阻止从 OnlyOffice 服务器到后端服务的请求。
    • 使用工具如 curl 或 Postman 测试从 OnlyOffice 服务器到后端服务的连通性。
  4. OnlyOffice SDK 版本和兼容性

    • 确保您使用的 OnlyOffice SDK 版本与 OnlyOffice 社区版服务器兼容。
    • 检查 OnlyOffice 的官方文档或社区论坛,看看是否有其他用户遇到类似问题,并找到解决方案。
  5. 前端错误处理

    • 关于您提到的报错图片,由于图片链接无法直接查看,无法确定具体错误。但通常这类错误可能与资源加载、权限设置或脚本执行有关。
    • 检查浏览器控制台中的错误信息,看看是否有更详细的错误描述或堆栈跟踪,这有助于诊断问题。
  6. 日志和调试

    • 增加前端和后端的日志记录,特别是在处理 OnlyOffice 相关请求时。
    • 使用浏览器的开发者工具(如 Chrome DevTools)来监视网络请求和响应,确保回调请求被正确发送和接收。

通过上述步骤,您应该能够诊断并解决问题。如果问题仍然存在,可能需要更详细的日志信息或进一步的调查来找到根本原因。

1 个回答
const editorConfig = {
  documentType: 'word',
  document: {
    fileType: 'docx',
    key: `document-${userStore.getUserInfo.id}-${Date.now()}`,
    title: '测试',
    url: 'http://x.x.x.x/other/c63e332a-4467-45c2-bda4-55d296df15e5MBTI职业性格测试(题目解析都有)_1737339368991.docx',
    info: {
      owner: '王阳明',
    },
    permissions: {
      copy: false,
      download: false,
      edit: true,
      print: false,
    }
  },
  editorConfig: {
    callbackUrl: `http://192.168.1.2/jeecg-boot/IndexServlet/documentWorks`,
    //  token 验证
    token: "your_secret_token",
    // 自动保存
    autosave: true,
    events: {
      onRequestSave: () => {
        console.log('保存请求已发送')
      },
      // 添加错误处理
      onError: (event) => {
        console.error('ONLYOFFICE Error:', event);
      },
      // 添加保存完成回调
      onSave: () => {
        console.log('文档已保存');
      }
    },
    lang: 'zh-CN',
    region: 'CN',
    user: {
      id: userStore.getUserInfo.id,
      name: userStore.getUserInfo.realname,
    },
    mode: 'edit',
    customization: {
      autosave: true,  
      forcesave: true, 
      close: {
        visible: false,
        text: 'Close file',
      },
      toolbar: false,
      compactToolbar: false,
      uiTheme: 'theme-dark',
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏