是否可以使用webproxy将URL重定向到另一个url(例如fiddler)

时间:2009-06-12 22:07:12

标签: c# java web-services fiddler webproxy

我正在尝试解析另一个服务器中的WSDL文件,但在整个文档中都有硬编码的“localhost”。

当我拿到它时,显然该程序抱怨“连接被拒绝”,因为我的机器中没有运行任何东西。

我的问题是:是否可以使用webproxy(例如fiddler)将这些localhost请求重定向到我的其他服务器,以便完成WSDL引用?

: - /

由于

P.S。我总是可以修复遥控器“wsdl”,但负责人将在这里待到下周,我想今天开始工作。

4 个答案:

答案 0 :(得分:6)

您可以使用Fiddler作为您机器的代理,然后让它重写WSDL以将localhost更改为正确的机器名。

FiddlerScript CookBook有一个关于如何编写这种脚本的例子。转到该页面并搜索“删除所有DIV标签(以及DIV标签内的内容)”。只需更改正则表达式以匹配localhost并将替换设置为您要使用的计算机名称。

答案 1 :(得分:1)

如果您具有对计算机的SSH访问权限,则应该能够使用SSH端口转发来完成此操作。我假设您使用的是Windows(基于C#标签),因此您可以按照此处的说明使用Putty:Using port forwarding with PuTTY。只需按照这些说明将“localhost”上的所需端口转发到为WSDL提供服务的服务器。

或者,如果您使用的是基于* nix的计算机或Mac,请使用SSH,并使用以下命令:

ssh -L PORTYOUWILLUSE:localhost:PORTONSERVER username@serverhostname

例如,如果WSDL在端口80上提供,则可以执行

ssh -L 80:localhost:80 username@server

一旦您登录(使用任一方法),对端口80上的localhost的任何请求都将被重新路由到服务器。

答案 2 :(得分:0)

如果您只想在解析WSDL时将其更改几分钟,则可以更改HOST文件并将“localhost”指向远程IP地址。 hosts文件位于Windows VISTA / XP中的“C:\ Windows \ System32 \ drivers \ etc”中。

答案 3 :(得分:0)

有几种方法可以实现这一目标,没有一种方法可以作为长期解决方案特别强大,但是你提到你只需要一些临时的东西,直到开发人员回来。

如果域之后的所有内容都匹配(如果您的远程URL与localhost相同),则可以在hosts文件中编辑localhost条目。

在system32 \ drivers \ etc中,将“hosts”文件复制到桌面上。在记事本中打开并更改此行:

127.0.0.1   localhost

将IP地址(127.0.0.1)更改为远程域。然后将hosts文件复制回etc目录。 (注意:无法以管理员或其他方式直接编辑此文件。)

如果远程Web服务上有多个域,在IIS中,您需要更改网站以服务于“localhost”的请求,这可能看起来有点奇怪,但它会起作用,因为您的机器将会生成请求服务器的IP地址,但将请求域指定为“localhost”。右键单击IIS中的网站并选择属性,然后将域“localhost”添加到该网站支持的HTTP-Header值列表中。如果您通过IP地址访问IIS中的网站将提供内容,则可以忽略所有这些内容。如果在多个网站之间共享该单个IP地址(通常是这种情况),那么您将从IIS中获取“错误的主机名”错误,因为它尝试查找“localhost”并且无法找到要指向的网站要求。

另一种可能性是使用名为Proxomitron的个人代理服务器。它有点旧,不再开发,但设置非常简单,非常扎实。

安装完成后,打开它并单击“配置” - 将其侦听的端口更改为80.接下来,您需要创建一个重定向规则(它实际上不是重定向,更多是重写URL) 。您需要快速阅读docs以了解如何添加自己的重定向,但应用程序附带了大量示例。您正在寻找的规则是RDIR:

  

$ RDIR()更加偷偷摸摸,并在不告诉您的浏览器的情况下重定向Proxomitron中的连接。当您希望浏览器将其视为一个地方时,实际上它会转移到其他地方时,这非常有用。