我们试图让SSL F5终结angular色中的F5 BIG-IP LTM iRule与SharePoint 2007一起正常工作。 此体系结构将所有SSL处理卸载到F5,而F5仅通过HTTP(通过安全networking)将交互请求/响应转发到SharePoint前端服务器。
为了讨论的目的,iRules由F5 Networks BIG-IP设备上的Tcl解释引擎进行parsing。
因此,F5做了两件事来通过它:
我们有第1部分工作正常。
第2部分的主要问题是,在XML命名空间和其他类似问题的响应重写中,并非所有匹配“http:”的匹配都可以更改为“https:”。 有些必须保持“http:”。 此外,一些“http:”url很困难,因为它们生活在SharePoint生成的JavaScript中,并且它们的斜杠(即“/”)实际上由UNICODE的6个字符的string“\ u002f”在HTML中表示。
例如,在这些棘手的情况下,传出HTML中的文字string是:
http:\u002f\u002fservername.company.com\u002f
应该改成:
https:\u002f\u002fservername.company.com\u002f
目前我们甚至无法弄清楚如何在这些UNICODE序列string文字的search/replaceexpression式中获得匹配。 似乎无论如何分割它,Tcl解释器在将“\ u002f”string解释为“/”之前,都会将其解释为“/”。
我们已经尝试了我们所知道的Tcl转义方法的各种组合(主要是双引号,并使用一个额外的“\”来转义UNICODEstring中的“\”),但正在寻找更多的方法,最好的方法。
有没有人有任何想法或指向我们可以有效地自我教育的地方呢?
首先十分感谢。
您正在尝试做什么不build议与SharePoint。
推荐的方法是使用SharePoint内的备用访问映射。 您将创build一个https://的公共URL,并具有内部名称http://。
这将导致您的网页上的所有url使用https://创build
如果你不喜欢这个答案,你可能想在ServerFault http://serverfault.com上提出这个问题。
@JD,我应该添加这个:
有问题的SharePoint Web应用程序当前托pipe在与SQL Server 2005报告服务(SSRS)和PerformancePoint 2007(PPS)集成(在其他Web应用程序上)的物理服务器和SharePoint场上。 这两种产品都不支持备用访问映射(AAM)。
虽然我们想要完成上述工作的Web应用程序确实没有与SSRS或PPS集成,但是我们的架构师和技术负责人宁愿尽可能避免在该环境中使用AAM。
所以原则上我同意你的回答,在这种情况下,我要求特别的例外,特别是因为我和其他的技术战略家认为这是正确的答案。
我对sharepoint一无所知,但至less从纯粹的tclangular度来看,下面显示了如何匹配你的文字string:
tclsh> set string {http:\u002f\u002fservername.company.com\u002f} http:\u002f\u002fservername.company.com\u002f tclsh> regexp {http:\\u002f} $string 1
重要的是要确保\ u002f中的反斜杠不被tclparsing器解释(通过将模式封装在{}中),并确保反斜杠不被正则expression式parsing器parsing(通过转义它带有反斜杠)。
为了将来的参考,因为这是最近出现以及…
Sharepoint备用访问映射是最干净的解决scheme。
对于一个BIG-IP iRule,你可以尝试这样的事情。 请注意,TCL需要解释unicode字符,才能匹配它们。
when HTTP_REQUEST { # Disable the stream filter by default STREAM::disable } when HTTP_RESPONSE { if {[HTTP::header value Content-Type] contains "text"}{ set find_str "http:\u002f\u002fservername.company.com\u002f" set replace_str "https:\u002f\u002fservername.company.com\u002f" STREAM::expression "@$find_str@$replace_str@" STREAM::enable } }
亚伦
用\ 456 \ defreplace\ 123 \ abc
STREAM :: expression {@ \\ 123 @ \ 456 @ @ \ abc @ \ def @}