我有一个无法轻易更改的调用系统。它发送了一个包含两个元素且顺序错误的 http 请求(实际上是 SOAP)。
使用 XSL 转换可以轻松修复此问题。
我想实现一个通过 XSL 转换请求的代理 Web 服务器。理想情况下,Web 服务器是 Apache 或 nginx,但我也可以看看其他的。
有什么建议吗?
答案1
当我弄清楚一些事情时,我回答了我自己的问题。
我在 Apache 中使用了 mod_ext_filter,并在实际转换中使用了 SaxonHE。这不是一个高性能解决方案(它会为每个请求启动处理器),但目前已经足够了。
配置的关键行是:
ExtFilterDefine soap-fix mode=input cmd="/usr/bin/java -cp /saxon-install-location/saxon-he-10.3.jar net.sf.saxon.Transform -xsl:/whereever-you-want/fix.xsl -s:- "
SetInputFilter soap-fix
然后使用标准代理来转发修改后的请求。