设为首页 收藏本站
查看: 765|回复: 0

[经验分享] 在其他系统Iframe中显示SharePoint 页面

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-25 12:24:33 | 显示全部楼层 |阅读模式
前段时间在做一个项目,要求将SharePoint 的 OWA(Office Web Apps)中的文档显示页面嵌入到另外一个OA系统中,提供给用户可以通过浏览器查看SharePoint文档的能力。
    嵌入我们能想到的方法就是 Iframe,这里我们暂且忽略可能存在的SSO问题。
  当将SharePoint页面嵌入到Iframe中的时候,遇到了一个问题。
DSC0000.png
  “此网页不能显示在一个框架中 ……”,后来经过反复的查找原因,也参考了国外的网站内容。
  X-Frame-Options 就是它折磨了我一天多。后来在发现在我买了很久却只看了一章的书里有这个内容的介绍,《白帽子讲Web安全》中有一章就介绍了 X-Frame-Options,主要用来防止 ClickJacking(点击劫持)。是一种安全策略。
    这个时候就不难理解SharePoint为什么会出现这种错误了。
  错误原因找到了,接下来就是 解决它。
  解决的思路是 用程序将 X-Frame-Options 删除掉。这样做有些冒险。但在内网环境中,我倒觉得完全可以一试。
  具体方法
  1. 在VS中创建一个SharePoint 解决方案项目,选择场解决方案。
  2. 在项目中添加一个Feature,并为Feature添加Event事件。
  3. 右键点击项目名称,选择新建项。选择ASP.Net模块。
DSC0001.png
  4. 输入以下代码。
  public class PermissiveXFrameHeaderModule : IHttpModule   
    {   
        private const string XFRAMEOPTIONS_HEADERNAME = "X-FRAME-OPTIONS";
  private void context_PreSendRequestHeaders(object sender, EventArgs e)   
        {   
            HttpApplication application = (HttpApplication)sender;   
            application.Response.Headers.Remove("X-FRAME-OPTIONS");   
        }
  public void Dispose()   
        {   
        }
  public void Init(HttpApplication context)   
        {   
            context.PreSendRequestHeaders += new EventHandler(this.context_PreSendRequestHeaders);   
        }   
    }
  5. 在Feature的事件程序中 添加代码如下
  public class Feature1EventReceiver : SPFeatureReceiver   
    {
  public override void FeatureActivated(SPFeatureReceiverProperties properties)   
        {   
            SPWebApplication application = (SPWebApplication)properties.Feature.Parent;   
            foreach (SPWebConfigModification modification in this.Modifications)   
            {   
                application.WebConfigModifications.Add(modification);   
            }   
            application.WebService.ApplyWebConfigModifications();   
            application.Update();   
        }
  public override void FeatureDeactivating(SPFeatureReceiverProperties properties)   
        {   
            SPWebApplication application = (SPWebApplication)properties.Feature.Parent;   
            foreach (SPWebConfigModification modification in this.Modifications)   
            {   
                application.WebConfigModifications.Remove(modification);   
            }   
            application.WebService.ApplyWebConfigModifications();   
            application.Update();   
        }
  private SPWebConfigModification[] Modifications   
        {   
            get   
            {   
                SPWebConfigModification[] modificationArray = new SPWebConfigModification[1];   
                SPWebConfigModification modification = new SPWebConfigModification("add[@name='PermissiveXFrameHeaderModule']", "configuration/system.webServer/modules");   
                modification.Owner = "PERMISSIVEXFRAME";   
                modification.Sequence = 0;   
                modification.Type = 0;   
                modification.Value = &quot;<add name=\&quot;PermissiveXFrameHeaderModule\&quot; type=\&quot;XMlFrame.PermissiveXFrameHeaderModule, XMlFrame,Version=1.0.0.0, Culture=neutral, PublicKeyToken=16937942f8602783\&quot; />&quot;;   
                modificationArray[0] = modification;   
                return modificationArray;   
            }   
        }
  6. 最后一步 就是部署它 就ok了
  好吧,我承认我这个参考了老外写的东西,但日子有点久了,实在不知道他是谁了 blog地址是什么了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118688-1-1.html 上篇帖子: Sharepoint学习笔记---Debug&TroubleShooting--使用ULS Log跟踪Solution错误信息 下篇帖子: [sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表