先从一个简单的问题说起。
前两天在网上,有网友问我这样一个问题:“上载到SharePoint 2010文档库中的一个PDF文件,当直接点击此文件链接时,为什么浏览器弹出的对话框只有保存,而没有打开?”
就像上面的截图所显示的,在浏览器弹出的对话框上,只能让用户保存(Save)的选项,而没有一个打开(Open)的选项。但可能有人会记得,以前SharePoint 2007的时候,并不是这样的。用户直接点击一个存放在SharePoint 2007文档库里面的PDF文件时,浏览器会提示用户,可以直接打开它,然后本地安装的PDF Reader就会直接打开这个PDF文件,开始阅读。
先说解决这个问题的方法。打开SharePoint 2010管理中心,管理Web应用程序,选择一个Web应用程序,点击Ribbon区域的“常规设置”,然后在弹出的设置对话框中,将“浏览器文件处理程序”这个设置项从默认的“严格”,修改为“许可”。
搞定!你会发现修改了这个设置之后,浏览器会重新显示出“打开”选项,让用户可以直接打开PDF文件。
好了,如果你只是想解决这个问题,可以不用继续往下阅读了。
嗯,想知道为什么?好吧,这就是原因。重新将Web应用程序常规设置中的“浏览器文件处理程序”设置项改回默认的“严格”。打开文档库,这次在点击PDF文件链接之前,打开浏览器的Developer Tools(在IE浏览器中是通过F12打开它,下面将使用IE浏览器做例子,FireFox和Chrome也有各自的类似工具可以使用)。在“Network”选项卡中点击“Start capturing”按钮,它会捕获当前浏览器窗口与服务器之间的所有网络通信。然后,点击那个PDF文件链接。
在“Network”选项卡里面,找到用户点击PDF链接时所产生的网络请求,双击它,就可以看到这次请求的所有详细的Request和Response信息。点击“Response headers”选项卡,就可以看到从SharePoint 2010服务器所返回的HTTP头信息。嗯,如下图所示,你会看到一个有趣的头信息,“X-Download-Options = noopen”。
就是这个HTTP头信息,告诉浏览器:“不要直接打开这个文件,不要给用户显示出打开选项!”
当我们在SharePoint 2010管理中心里面,将Web应用程序的“浏览器文件处理程序”设置项从默认的“严格”修改为“许可”时,SharePoint 2010服务器就会停止在HTTP头里面添加这个头信息,于是,浏览器又会允许用户直接打开文件了。
SharePoint 2010默认会禁止浏览器直接打开所有存放在文档库中的任何文件,方法就是向返回给浏览器的HTTP头信息中添加那个额外的metadata。为什么当用户点击Office文档的时候,仍然会自动打开本地的Office程序,打开Office文档呢?这其实是因为页面上的脚本会调用OpenDocuments这个ActiveX控件,由它来启动客户端的Office程序,打开Office文档。
SharePoint 2010为什么这么做?原因就是为了更好的安全性。由于SharePoint通常会允许非网站管理员上载文件到文档库里面,所以让浏览器随便打开这些用户上载的文件,实际上是一件非常危险的事情。在最严重的情况下,这会给恶意用户提供实施脚本攻击的漏洞,甚至引发跨站点脚本攻击。比如,一个仅仅具备Contributor(参与讨论)角色的用户,可能会上载一个扩展名是.docx,但实际上确实一个含有恶意脚本的.html文件,到文档库中。当管理员尝试打开这个“Word文档”时,浏览器可能会尝试直接打开它,并无意中运行那个文件中所包含的脚本。
当然,除了禁止用户直接在浏览器中打开文档库中的文件之外,SharePoint 2010还在网站的安全性上做了其他一些增强。比如,Contributor现在不能直接上载一个页面文件到Pages(页面)库中,而只能通过Pages库内置的“创建页面”功能,来新建页面。又比如,通过在web.config的<SaveControl>节点中添加“SafeAgainstScript”和“RequiresDesignerPermission”属性,系统管理员可以禁止Contributor修改Web部件的属性。当然,这些又是另外一个话题了。
相关推荐
CVE-2023-38831 漏洞位于ZIP文件的处理过程,攻击者可以制作恶意.ZIP或.RAR压缩文件,其中包含无害文件(例如.jpg、.txt或PDF文件等)及恶意执行文件,并以无害文件名为文件夹命名。当用户点击并试图解压缩看似合法...
如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart 创建和删除硬盘...
5.4 理解为什么要定义自己的函数 5.5 了解基本的函数结构 5.5.1 函数命名 5.6 使用参数 5.7 理解作用域 5.8 参数的引用传递和值传递 5.9 使用Return关键字 5.9.1 从函数返回一个值 5.10 实现递归 5.10.1 ...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
基本功能特色 1.全站采用DIV+CSS布局,符合WEB2.0标准,您...15.独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。
录取查询功能 成绩查询功能 视频播放功能 ...15.独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。
16.独创全站图片即时替换功能,方便地替换网站中任何位置的图片(包括背景图片),再也不用找不到图片路径而发愁了。 17.采用AJAX技术,性能与效果得到极大提高。 18.前台内容栏目结构清晰,易于访问者查看想要的...
18:单线程下载时不能创建临时文件. 19:下载流文件(rm,Media Player). Notepad++ V5.6.8 源码! 如题。 OA精灵代码 c++版 一套oa系统。 ocxdlgtest dll的一个实例。 OD反汇编引擎(带VC修改版和原版) 如题。主要...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
独创模块编辑功能,可自己设计独特的模块(包括但不限于:脚本代码、ASP.NET代码、图片、文字等等,只要你想得到的任何网页元素)供设计模板时使用。 独创全站图片即时替换功能,方便地替换网站中任何位置的图片...
16.独创全站图片即时替换功能,方便地替换网站中任何位置的图片(包括背景图片),再也不用找不到图片路径而发愁了。 17.采用AJAX技术,性能与效果得到极大提高。 18.前台内容栏目结构清晰,易于访问者查看想要的...