咱们都知道,为了方便广大的开发人员快速开发Microsoft Teams选项卡应用,微软提供了一个JS SDK,你能够经过这里 https://docs.microsoft.com/en-us/javascript/api/overview/msteams-client?view=msteams-client-js-latest#:~:text=Microsoft%20Teams%20JavaScript%20client%20SDK%201%20Finding%20the,can%20use%20import%20syntax%20to%20import%20specific%20modules. 了解更多详情。 javascript
在这个SDK中,咱们常常会用Context对象去获取当前的上下文信息,例如用户信息啦,所在的团队或频道信息等等。 java
可是这里其实有一个潜在的安全问题:若是这个网页不是在Teams中运行,而是被别有用心的人员在外部套了一个iframe,而且模拟了一个相似的Context对象的话,有可能进行安全方面的攻击。 express
那么,若是设计一个更加安全的机制,不容许咱们的网页被其余系统随意地用iframe嵌入,只容许在Teams中进行嵌入呢? npm
能够经过X-Frame-options这个服务器选项来控制。请参考 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options api
但这个选项目前要么设置容许全部域访问,要么设置全部域都不能访问。 安全
第三个选项如今是不推荐使用的,取而代之的是一个新的HTTP Header,叫作CSP, Content-Security-Policy 服务器
你须要将以下几个域名加入进去 spa
teams.microsoft.com 设计
*.teams.microsoft.com
*.skype.com *.sharepoint.com
outlook.office.com
and the current host
若是你是用nodejs来开发,如今也有一个简单的作法来实现这样的需求
https://www.npmjs.com/package/express-msteams-host
在具体的代码中,还能够很容易地检测当前是否是在Teams中运行,以下范例代码