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

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/ ..................................................... 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值