0

我在远程服务器的以下地址上托管了两项服务:

192.168.200.157:80/service1
192.168.200.157:7071/service2

我正在使用 AJAX 请求请求这些服务。我已经为跨域 AJAX 请求使用了 ARR 和 URL 重写工具。为此,我在 IIS 的 URL 重写工具中定义了如下规则:

<rule name="ReverseProxyInboundRule1" stopProcessing="true">
    <match url="(.*)" />
    <action type="Rewrite" url="http://192.168.200.157:/{R:1}" />
</rule>

使用此规则,我可以向“service1”发送跨域请求,但发送到“service2”的请求给出“404 Not Found”错误。

Firebug 结果还显示,这条规则正在向 service1 发送请求,但无法向 service2 发送请求。

上述规则中需要进行哪些修改或添加才能成功向两个服务发送请求?

4

1 回答 1

0

在代码中操作节点的url属性中——注意冒号后跟斜杠。这意味着没有指定端口,因此使用默认端口 80。基本上,这些例子是等价的(所以去掉不必要的冒号):

http://test1/foo
http://test1:/foo
http://test1:80/foo

所以……这条规则说的是针对所有 URL(因为匹配节点的url属性将匹配所有值),将所有请求转发到操作节点的url属性值中指示的端口 80。

匹配 url值必须只选择一些请求(而不是所有请求)。您需要为剩余的请求编写第二条规则。您的第二条规则可能是您的包罗万象的情况,这样的事情将捕获所有到达那一步的请求:

<rule name="ReverseProxyInboundRule2" stopProcessing="true">
   <match url="(.*)" />
   <action type="Rewrite" url="http://192.168.200.157:7071/{R:1}" />
</rule>
于 2013-11-21T22:55:29.580 回答