Sharepoint MS-WOPI客户端在编辑时拒绝对iframe进行帧处理,但在预览时允许对iframe进行帧处理

Sharepoint MS-WOPI客户端在编辑时拒绝对iframe进行帧处理,但在预览时允许对iframe进行帧处理,iframe,sharepoint,content-security-policy,ms-wopi,Iframe,Sharepoint,Content Security Policy,Ms Wopi,我在Sharepoint中有一个客户端,它正确地接受URL请求以打开Word文档,如: 通过直接在浏览器中打开URL,或将其设置为iframe中的源,这样做效果相当好: <iframe _ngcontent-ryg-c10="" frameborder="0" height="750" width="100%" src="https://myCompany.sharepoint.com/:w:/r/

我在Sharepoint中有一个客户端,它正确地接受URL请求以打开Word文档,如:

通过直接在浏览器中打开URL,或将其设置为iframe中的源,这样做效果相当好:

<iframe _ngcontent-ryg-c10="" frameborder="0" height="750" width="100%" src="https://myCompany.sharepoint.com/:w:/r/teams/Test-EZ-CO-LON/Test-CO-L1227/_layouts/15/WopiFrame.aspx?sourcedoc=%7BCDE12345-ABC1-4A5F-9097-008E876E4E66%7D&action=interactivepreview"></iframe>
<iframe _ngcontent-ryg-c10="" frameborder="0" height="750" width="100%" src="https://myCompany.sharepoint.com/:w:/r/teams/Test-EZ-CO-LON/Test-CO-L1227/_layouts/15/WopiFrame.aspx?sourcedoc=%7BCDE12345-ABC1-4A5F-9097-008E876E4E66%7D&action=edit"></iframe>

因此,该URL对于直接打开和在iframe中使用都非常有效

问题是,如果将“interactivepreview”更改为编辑操作值,如“edit”,例如:

<iframe _ngcontent-ryg-c10="" frameborder="0" height="750" width="100%" src="https://myCompany.sharepoint.com/:w:/r/teams/Test-EZ-CO-LON/Test-CO-L1227/_layouts/15/WopiFrame.aspx?sourcedoc=%7BCDE12345-ABC1-4A5F-9097-008E876E4E66%7D&action=interactivepreview"></iframe>
<iframe _ngcontent-ryg-c10="" frameborder="0" height="750" width="100%" src="https://myCompany.sharepoint.com/:w:/r/teams/Test-EZ-CO-LON/Test-CO-L1227/_layouts/15/WopiFrame.aspx?sourcedoc=%7BCDE12345-ABC1-4A5F-9097-008E876E4E66%7D&action=edit"></iframe>

直接在Web浏览器中打开URL时,仍然可以正确打开该URL,但如果此新URL用于以下iframe中:

<iframe _ngcontent-ryg-c10="" frameborder="0" height="750" width="100%" src="https://myCompany.sharepoint.com/:w:/r/teams/Test-EZ-CO-LON/Test-CO-L1227/_layouts/15/WopiFrame.aspx?sourcedoc=%7BCDE12345-ABC1-4A5F-9097-008E876E4E66%7D&action=interactivepreview"></iframe>
<iframe _ngcontent-ryg-c10="" frameborder="0" height="750" width="100%" src="https://myCompany.sharepoint.com/:w:/r/teams/Test-EZ-CO-LON/Test-CO-L1227/_layouts/15/WopiFrame.aspx?sourcedoc=%7BCDE12345-ABC1-4A5F-9097-008E876E4E66%7D&action=edit"></iframe>

然后Sharepoint拒绝帧,发送此错误消息:

拒绝诬陷https://myCompany.sharepoint.com/'因为祖先违反了以下内容安全策略指令:“frame Orients‘self’teams.microsoft.com*.teams.microsoft.com*.skype.com*.teams.microsoft.us local.teams.office.com*.powerapps.com*.yammer.com*.officeapps.live.com*.office.com*.stream.azure-test.net*.microsoftstream.com”。

因此,总而言之:
  • 对于不可编辑的WOPI操作(例如“interactivepreview”),URL适用于所有场景(在iframe和非iframe中)
  • 对于可编辑的WOPI操作(例如“编辑”),URL只有在直接使用(非iframe)时才能正常工作
  • 对于可编辑的WOPI操作,URL在iframe中使用时不起作用,因为前面提到的错误

这是WOPI错误配置、Sharepoint错误配置还是客户端(浏览器)请求错误配置,或其他什么?

帧祖先
检查DOM上的所有父上下文看起来像
action=edit
模式使用一些中间iframe。如果CSP在您的控制下,请添加
https://myCompany.sharepoint.com
进入
帧祖先
指令。否则规则为irame头通过MS-WOPI服务器,也许可以通过解决。假设从错误消息和sharepoint.com域为您的文件提供服务,您正在sharepoint Online(=非sharepoint server)上运行,因此SP实例不在您的控制之下,您无法按照中所述设置CSP。@rocky这是正确的。然后它就不起作用了。有一些棘手的解决方法,比如在浏览器插件中拦截请求,或者构建自己的主机页,并将sourcedoc翻译为wopisrc,但我不推荐任何一种。更好的解决方法选项是只显示指向文件的链接,并让用户在新窗口中打开它。顺便问一下-是否有一个选项(按钮)可以从“interactivepreview”切换到“edit”?@rocky,是的,就是这样一个按钮。此时,我只是在新的浏览器窗口中提供文档。