实施例: 我想创建一个 AutoResponse规则,将所有对一个主机的调用映射到另一个主机,但保留网址。实例
http://hostname1/foo.html - > http://hostname2/foo.html
和
http://hostname1/js/script.js - > http://hostname2/js/script.js
在一条规则中。 现在,我已经通过为项目调用的每个URL创建了一个N AutoResponse规则来实现这一点,但我确信必须有一种方法可以使用正确的通配符来修改一条规则。我看了http://www.fiddler2.com/Fiddler2/help/AutoResponder.asp,但我看不出怎么做。外卡似乎都在匹配而不是动作。
完整的上下文:我正在开发一个测试版平台,并且当我的项目实际运行http://localhost:24575时,它正在向所有请求发送到http://localhost:56832。
答案 0 :(得分:14)
这是我配置Fiddler2的方式:
I want to redirect all requests from http://server-name/vendor-portal-html/ to http://localhost/vendor-portal-html/
我的配置如下:
REGEX:.*/vendor-portal-html/(.*) to http://127.0.0.1/vendor-portal-html/$1
感谢EricLaw的上述评论。
答案 1 :(得分:4)
因为这比使用Fiddler 重定向所有请求以便主持另一台主机更难以找到:
使用AutoResponder选项卡设置规则,以便与旧主机匹配的任何请求将重定向到新主机,并附加路径和查询字符串。
与正则表达式选项ix
匹配,使其不区分大小写并忽略空格。不要将n
选项设为it requires explicitly named capture groups。
捕获请求的路径和查询字符串,并使用变量$1
将其附加到重定向响应,其中path + query是第一个捕获组。如果你的正则表达式有更多,你可以使用捕获组$1
- $n
。
Fiddler随后会发出HTTP 307
重定向回复。
请求:regex:^(?ix)http://old.host.com/(.*)$ #Match HTTP host
回复:*redir:http://new.host.com/$1
请求强>
GET http://old.host.com/path/to/file.html HTTP/1.1
Host: old.host.com
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
<强>响应强>
HTTP/1.1 307 AutoRedir
Content-Length: 0
Location: http://new.host.com/path/to/file.html
Cache-Control: max-age=0, must-revalidate
答案 2 :(得分:3)
要从一个主机映射到另一个主机,请不要使用AutoResponder。而是,单击工具&gt;主机。
或者,您可以点击规则&gt;自定义规则,滚动到OnBeforeRequest并写一些代码:
if (oSession.HostnameIs("localhost") && (oSession.port == 24575)) oSession.port = 56832;
答案 3 :(得分:2)
使用正则表达式与Fiddler自动回复器映射请求是可能的。 这可以使用rexexp规则来完成。但是,这似乎没有记录在任何地方。
如果添加规则并在括号内使用正则表达式,则在使用占位符时可以在所需的映射中使用这些匹配... $ n
每个数字对应于规则中匹配的正则表达式。
Example of Rule: regex:http://server1/(\w*) -> http://server2/
This will result in the following mapping: http://server1/foo.html -> http://server2/foo.html