我们正在运行Outlook加载项,看起来Microsoft已将Office.js的版本从16.00
更新为16.01
:outlook:{ios:"16.00",mac:"16.00",web:"16.01",win32:"16.02"}
(通过https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js )
其中一项更改似乎是对postMessage
的抽象的额外验证,确保子/父的域(包括子域)相同。
由于我们在不同的子域上托管我们的加载项和中央身份验证服务器,因此,我们所有的OAuth流都在Outlook的网络中被破坏。
outlook-web-16.01.js:18 Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://outlook.domain.com') does not match the recipient window's origin ('https://auth.domain.com')
Outlook on Desktop(MacOS和Windows)不受影响。
我们已将清单文件中的域列入白名单:
<AppDomains>
<AppDomain>https://outlook.domain.com</AppDomain>
<AppDomain>https://outlook-staging.domain.com</AppDomain>
<AppDomain>https://auth.domain.com</AppDomain>
</AppDomains>
是否可以手动指定每个平台中加载的Office.js的版本,以便我们可以按照自己的步调升级并避免破坏这些更改?
答案 0 :(得分:1)
对于此特定错误,您需要将子域添加到清单中的appdomain / appdomains部分。见:
https://dev.office.com/reference/add-ins/manifest/appdomains https://dev.office.com/reference/add-ins/manifest/appdomain
主要版本更改,即16.00 - > 16.01,一般不能指定,也不应该回滚到。如果主机(OWA客户端或Outlook)期望某个版本(16.01)强制它使用16.00将导致意外行为(很可能apis只返回错误)。
如果您希望对我们对这些文件所做的更改(即我们对16.01所做的更改)更具弹性,您可以将文件从appsforoffice和selfhost中删除。但这不受支持/推荐。这意味着我们将错过对这些文件所做的任何错误修复或改进。