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

本文深入解析WebApplicationOpenPlatformInterface(WOPI)协议,阐述其如何为基于Web的服务提供查看和编辑Office文档的功能。通过示例说明客户端如何使用WOPI获取文件内容,并探讨了WOPI在实现文档查看和编辑过程中的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值