某些SharePoint页面在https环境中充当http

时间:2009-03-25 16:03:00

标签: sharepoint ssl sharepoint-2007 wss-3.0 isapi

我有一个使用SSL的WSS 3.0系统,其中每个页面都应该作为https提供。几乎所有页面都以https形式出现,但在某些情况下,我点击一个链接,这会打开一个页面的http版本(不加载)。在这些情况下,我必须手动放入's'来加载页面。发生这种情况的地方是:

  • / _ layouts / newgrp.aspx:当我尝试创建一个新组时,我需要http://server/_layouts/newgroup.aspx,尽管它应该是https。该页面未加载到http。如果我手动更改网址,它会加载。
  • / _ layouts / edtgrp.aspx:与newgrp.aspx相同
  • 如果我进入文档库并查看文件的版本历史记录,则该文件的各个版本的URL为http。有趣的是,当我将鼠标悬停在它们上时,浏览器状态栏也会显示http(所以看起来SharePoint在生成链接时会感到困惑,而不是在我点击它们时)。

为了解决这个问题,我尝试在搜索http实例的DOM中添加一些javascript,并用https替换它们。这在某些情况下有效,但有些地方javascript无法访问,例如当SharePoint提供目标URL以响应POST请求时,我认为是newgrp / edtgrp.aspx。

我还尝试添加ISAPI过滤器,将页面从http重定向到https。这似乎导致重定向循环,并且在任何情况下我都不确定这些过滤器是否会保留查询字符串或POST信息。

有没有人见过这个问题?

更新:我们已从Squid切换到ISA,问题在版本历史记录中继续存在,但在新组或编辑组中没有。我们还没有看到任何改进AAM设置的改进。

在ISA中发生这种情况的地方:

  • 列表或文档库中项目下的“版本历史记录”
  • 列表或文档库中项目下的“管理权限”
  • 列表或文档库中的项目下的
  • “提醒我”
  • “人员和群组”页面中的“添加用户”menuitem
  • “人员和群组”页面中的“群组设置”菜单项
  • “人员和群组”页面中的“编辑群组快速启动”菜单项
  • “人员和群组”页面中的“设置群组”菜单项
  • “人员和群组”页面中的“列表设置”menuitem

5 个答案:

答案 0 :(得分:3)

不确定是不是这样,但您是否检查了备用访问映射,以确保他们说的是https而不是http?

答案 1 :(得分:1)

我会回应检查您的备用访问映射的建议。 SSL是在SharePoint前端完成的,还是通过一个专用的SSL硬件完成的?

答案 2 :(得分:1)

使用 HTTP模块修改SharePoint的输出,以便链接始终更改为https。这样的模块可以插入IIS并修改任何渲染的HTML。我已经使用这种技术使SharePoint XHTML兼容并且运行良好。

更好的是,几乎所有的工作都已经完成了。 UrlRewritingNet模块是开源的,可以免费下载。它应该适用于您的SharePoint站点。此工具具有出色的文档,并使用正则表达式来匹配要更改的URL。为你的案例编写一个应该很容易,例如^http://。如有必要,还可以使用更多高级选项。

如果您更喜欢自己编写,那么15秒网站上有一篇名为Rewrite.NET -- A URL Rewriting Engine for .NET的好文章。

最后,如果您使用的是IIS 7,则可以尝试使用URL Rewrite Module。我自己从未使用过它,也不知道它是否适用于SharePoint,但它是最受UI驱动的解决方案。

答案 3 :(得分:0)

在IIS中将重定向从http添加到https。每次访问该页面时,它都会将您重定向到您的https页面。

我还建议将WSS放在另一台服务器上,看看你是否遇到同样的问题。如果不这样做,您可能需要重建/迁移您的东西。

答案 4 :(得分:0)

亚历克斯以一种我认为通常会起作用的方法回答了这个问题。这是我如何具体修复这个问题。

看起来当加载SharePoint aspx页面时,它会填充ContextInfo类型的javascript结构(在init.js中定义),该结构在变量ctx中实例化。该结构有一个名为httpRoot的成员,后来在core.js中用于在各种下拉列表中构建菜单项。

这个ctx.httpRoot由于某种原因填充在SharePoint创建的aspx文件中的javascript中,其行如下所示:

    ctx.HttpRoot = "http:\u002f\u002fsubdomain.domain.com";

是的,它有Unicode斜杠,它有http而不是https。我不知道为什么。但是,修复这行javascript似乎解决了这个问题。

我通过在ISA中添加URL转换规则来更改该行,该规则将http:\ u002f \ u002f \转换为https:\ u002f \ u002f \。我怀疑使用相同替换的HTTP模块也可以工作。或者可能是一些在某些时候重新分配变量的javascript。

我仍然认为这不太理想,必须有更合适的方法来修复这些链接。