MS-WOPI host 简单实现查看/编辑

Web Application Open Platform Interface (WOPI). WOPI为基于Web的服务提供了一种查看和编辑OfficeWebApps中文档的方法,您可以从Office文档中获得所有高保真和丰富的文档。

概述

客户端如何使用WOPI的一个例子是为特定类型的文件提供基于浏览器的查看器。该客户端使用WOPI获取文件的内容,以便将该内容以浏览器中的网页形式呈现给用户。下图显示了如何工作的示例。

图1 使用WOPI为特定类型的文件提供基于浏览器的查看器

上图中交互过程中一个值得注意的细节是,WOPI服务器提供了“调用WOPI客户端所需的信息”。WOPI客户端提供了一种机制,通过该机制,WOPI服务器可以发现WOPI客户端的能力,以及调用这些功能的方法。(正如部署 Office Online Server中所讲到的../hosting/discovery)下图描述了这种交互:

图2 WOPI 发现

HOST实现查看文档要做什么

CheckFileInfo

简单地说,CheckFileInfo是WOPI应用程序如何获取有关文件和用户对文件的权限的信息的。

它应该有一个如下所示的URL:

http://server/<...>/wopi*/files/<id>?access_token=<token>
get method

这是WOPI应用程序将调用的主要URL,以检索有关文件的信息。您将始终在URL中收到文件ID,因此应用程序可能要求您执行的每个操作都是特定于文件的。所有WOPI操作都需要CheckFileInfo。

WOPI应用程序期望响应体中有一个JSON对象。这个JSON响应可以包含许多可选的值,这些值都在[MS-WOPI]第3.3.5.1.1.2节中讨论过,但它至少需要包括BaseFileName、OwnerId、size和Version。

GetFile

CheckFileInfo提供有关文件的信息,GetFile则返回文件流。它应该有一个如下所示的URL:

http://server/<...>/wopi*/files/<id>/contents?access_token=<token>
get method

当您收到GetFile请求时,您的响应应该包括HTTP响应主体中请求的文件的二进制内容(当然,在您验证了访问令牌和权限之后)。

HOST实现编辑文档要做什么

CheckFileInfo

http://server/<...>/wopi*/files/<id>?access_token=<token>
get method

同样是文件信息检索,但是它应该返回用户是否可以编辑文件的标识,比如UserCanWrite、SupportsUpdate等(具体仍参考[MS-WOPI]第3.3.5.1.1.2节)。

GetFile

同上

PutFile

url和GetFile一样,但是请求方法(request method)不同。

http://server/<...>/wopi*/files/<id>/contents?access_token=<token>
post method

wopi client 获取浏览器编辑的文档的内容,将二进制流发送给该PutFile服务,因此实现的时候,保存该二进制流就行了。

代码实现

可以参考  office online server实现文档的预览编辑

其他需要注意的地方

参考上面代码实现,感觉 wopi host 似乎不太安全。如果别人自己实现了一个wopi host,将host链接作为WopiSrc参数传给我们的OfficeWebApp,我们岂不是消耗了自己服务器的资源给他人做了在线查看/编辑文档服务。

解决办法,就是限制访问:

1. 指定 Office Online Server 能够访问的网站域名白名单。

New-OfficeWebAppsHost -domain "contoso.com"

则限制了只能访问 contoso.com 的 wopi host。具体请参考 Office Online Server PowerShell

2. Office Online Server 服务,一般要暴露外网地址给用户访问来提供预览编辑功能,因此第1点的域名设置是比较推荐的。

参考文档

[MS-WOPI]: Web Application Open Platform Interface Protocol

March 21, 2013  S. D. Oliver  Introducing WOPI

转载于:https://my.oschina.net/tita/blog/2963778

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
3.2.6 Timer Events.............................................................................................. 28 3.2.7 Other Local Events...................................................................................... 28 3.3 WOPI Protocol Server Details............................................................................. 28 3.3.1 Abstract Data Model.................................................................................... 29 3.3.2 Timers ...................................................................................................... 29 3.3.3 Initialization............................................................................................... 29 3.3.4 Higher-Layer Triggered Events ..................................................................... 29 3.3.5 Message Processing Events and Sequencing Rules .......................................... 29 3.3.5.1 HTTP://server/<...>/wopi*/files/<id> ..................................................... 29 3.3.5.1.1 AddActivities................................................................................... 31 3.3.5.1.1.1 Request Body ............................................................................ 31 3.3.5.1.1.2 Response Body .......................................................................... 31 3.3.5.1.1.3 Processing Details...................................................................... 32 3.3.5.1.2 CheckFileInfo .................................................................................. 32 3.3.5.1.2.1 Request Body ............................................................................ 32 3.3.5.1.2.2 Response Body .......................................................................... 32 3.3.5.1.2.3 Processing Details...................................................................... 41 3.3.5.1.3 CheckPolicy .................................................................................... 41 3.3.5.1.3.1 Request Body ............................................................................ 41 3.3.5.1.3.2 Response Body .......................................................................... 41 3.3.5.1.3.3 Processing Details...................................................................... 42 3.3.5.1.4 CheckUserAccess............................................................................. 42 3.3.5.1.4.1 Request Body ............................................................................ 42 3.3.5.1.4.2 Response Body .......................................................................... 43 3.3.5.1.4.3 Processing Details...................................................................... 43 3.3.5.1.5 DeleteFile ....................................................................................... 43 3.3.5.1.5.1 Request Body ............................................................................ 44 3.3.5.1.5.2 Response Body .......................................................................... 44 3.3.5.1.5.3 Processing Details...................................................................... 44 3.3.5.1.6 ExecuteCellStorageRelativeRequest ................................................... 44 3.3.5.1.6.1 Request Body ............................................................................ 45 3.3.5.1.6.2 Response Body .......................................................................... 45 3.3.5.1.6.3 Processing Details...................................................................... 45 3.3.5.1.7 ExecuteCellStorageRequest .............................................................. 45 3.3.5.1.7.1 Request Body ............................................................................ 46 3.3.5.1.7.2 Response Body .......................................................................... 46 3.3.5.1.7.3 Processing Details...................................................................... 46 3.3.5.1.8 GetActivities ................................................................................... 46 3.3.5.1.8.1 Request Body ............................................................................ 46 3.3.5.1.8.2 Response Body .......................................................................... 47 3.3.5.1.8.3 Processing Details...................................................................... 47 3.3.5.1.9 GetFileUserValue ............................................................................. 47 3.3.5.1.9.1 Request Body ............................................................................ 48 3.3.5.1.9.2 Response Body .......................................................................... 48 3.3.5.1.9.3 Processing Details...................................................................... 48
onlyoffice本地开发可以按照以下步骤进行: 1. 首先,你需要从官方网站下载onlyoffice的开源文档服务器(DocumentServer)的代码。你可以在中找到官方的github地址。 2. 下载代码后,你需要根据开发文档中提供的指导,搭建本地的onlyoffice开发环境。你可以按照开发文档中的说明进行操作。 3. 在搭建好开发环境后,你可以使用Office Web App Server来进行本地文件的预览。你可以参考中提供的格式来配置文件预览。 4. 如果你遇到上传Word文件后显示"download failed"的问题,可以尝试解决以下几个可能的原因: - 确保你的本地地址正确配置,不要使用"localhost"或"127.0.0.1"来访问,而是使用你的完整地址(例如:192.168.0.xx:8090/...)。 - 检查代理工具的设置,确保只有本地地址可以使用代理,否则可能会出现https安全问题。 - 检查app.js和api.js的版本是否一致,如果不一致,可以尝试将版本号同步,并进行部署。 5. 最后,你可以按照需要修改代码和配置文件来满足你的本地开发需求。 请注意,以上步骤仅供参考,具体的onlyoffice本地开发过程可能因个人需求和环境而异。你可以参考官方的开发文档和github代码库来获取更详细的信息和指导。希望这些信息对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [onlyoffice 本地二次开发基础教程](https://blog.csdn.net/makuta888/article/details/114264592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [ows-project:office web app server 文档预览部署&&wopi 集成](https://download.csdn.net/download/weixin_42134094/18731539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值