先从一个简单的问题说起。

前两天在网上,有网友问我这样一个问题:“上载到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部件的属性。当然,这些又是另外一个话题了。

从“为什么不能直接打开PDF文件”说到“脚本***”相关推荐

  1. 打开PDF文件弹出阅读未加标签文档的解决方法

    打开PDF文件弹出阅读未加标签文档的解决方法 参考文章: (1)打开PDF文件弹出阅读未加标签文档的解决方法 (2)https://www.cnblogs.com/Tty725/p/3308065.h ...

  2. Ubuntu 命令行打开pdf文件和打开命令行当前目录

    今天发现一个在Ubuntu 上打开pdf文件的命令,很好用,特此记录!~ xdg-open xxxx.pdf gnome-open . nautilus . 喜欢把它alias一下 .bashrc a ...

  3. Linux 下从命令行打开pdf文件和html文件的命令

    Linux 下从命令行打开pdf文件和html文件的命令 [日期:2012-06-18] 来源:Linux社区 作者:hipercomer [字体:大 中 小] 如果你经常工作在Linux终端下,某个 ...

  4. PDF文件上载图标,与启用浏览器浏览允许后依然无法在浏览器打开PDF文件的解决方案...

    1. 在网站上显示PDF文件的图标,具体步骤如下:     1) 准备好一张16 x 16 的GIF图片,作为PDF的图标.     2) 把这个图标复制到 "C:\Program File ...

  5. [html] 如何在页面打开PDF文件?

    [html] 如何在页面打开PDF文件? 移动端如果是安卓的不太能实现直接打开PDF文件,需要使用pdfjs将pdf转换成canvas,再在页面上展示 个人简介 我是歌谣,欢迎和大家一起交流前后端知识 ...

  6. python 打开pdf文件_Python3检验pdf文件是否有效

    [基本原理] 利用PyPDF2的PdfFileReader模块打开pdf文件,如果不抛异常,就认为此pdf文件有效.有时打开并不抛出异常,但是有这种警告:UserWarning: startxref ...

  7. Ubuntu 在终端下使用命令行打开pdf文件

    终端下使用命令行打开pdf文件 > evince  <文件名>& 使用evince命令在后台打开 使用鼠标打开感觉怪怪的

  8. 打开pdf文件提示文件过大_pdf文件太大如何用pdf转换工具进行压缩?

    PDF文件如果是由许多高清图片组合而成的,一般来说所占的空间都会比较大,这样的话我们在传输文件的时候时间会很长不太方便.那我们可以将PDF文件进行压缩变小这样可以大大提高我们的工作效率.那PDF文件过 ...

  9. 如何复制权限受限PDF文件的内容(亲测有效,Microsoft Edge打开pdf文件)

    如何复制权限受限PDF文件的内容(亲测有效,Microsoft Edge打开pdf文件) 当我们阅读大型pdf文档资料时,会有做笔记的习惯,刚开始打字做笔记还好,但后面发现有用的内容好像有点多,于是选 ...

  10. 解决edge浏览器无法打开pdf文件问题

    解决edge浏览器无法打开pdf文件问题 事情起因 处理过程 看书想法 总结 事情起因 今天在做题的过程中不经意间在评论区看题解的过程中看到一个评论推荐的一本书,经过对书的一波查阅和调研之后,决定快速 ...

最新文章

  1. nt是linux指令吗,linux shell 指令 诸如-d, -f, -e之类的判断表达式简介
  2. datagrid中使用dropdownlist编辑模版时遇到问题
  3. java字符串除法函数,java – 函数式编程:如何处理函数式编程中的异常或它的等价物...
  4. 转:教你如何备考PMP
  5. Spring Cloud 学习笔记(一) 之服务治理模块Spring Cloud Eureka 搭建注册中心
  6. log4j2 配置详解及使用范例
  7. Linux之常用操作总结
  8. HDU 2955 Robberies(概率DP,01背包)题解
  9. 【Linux 命令学习第二天】
  10. 综述 | 注意力机制
  11. 为什么Bert的三个Embedding可以进行相加?
  12. python : 读取csv最快的Datatable的用法
  13. Cathy学Java——数据库
  14. 【matlab图像处理】图像直方图操作和matlab画图
  15. python 解析 google Chrome 浏览器历史浏览记录以及收藏夹数据
  16. java 用户态_内核启动用户态的程序 - 但行好事 莫问前程 - JavaEye技术网站
  17. 腾讯云服务器宝塔面板账号密码忘记
  18. WordPress完美删除页脚自豪地采用WordPress和Proudly powered by WordPress(页尾footer.php)
  19. ofo“卖身”滴滴?共享单车开始进入下半场
  20. win10锁定计算机后黑屏,win10锁定屏幕就黑屏怎么办

热门文章

  1. Acrobat Pro DC 2022 Mac(全能PDF工具)完美兼容m1
  2. m1系统怎么重装,m1芯片怎么重装系统,苹果M1芯片重装系统,m1芯片重新安装mac
  3. 在苹果 Mac上接收和暂停或停止接收通知操作方法?
  4. Google 正式发布 Fuchsia OS,Flutter 集成尚存问题
  5. Mac上运行windows,你还在用双系统or虚拟机?
  6. 创建Maven项目时提示web.xml is missing and failOnMissingWebXml is set to true错误解决方案
  7. 阿里云服务器ECS数据盘的自动挂载解决方案
  8. 我是如何将博客转成PDF的
  9. n个人看了这个故事之后精神分裂了(ZT)
  10. 苹果mac幻灯片演示文稿制作软件:PowerPoint 2019