使用URL重写进行跨域Http请求

时间:2014-01-02 15:43:56

标签: iis mod-rewrite iis-7 url-rewriting iis-7.5

我正在尝试编写一个入站重写规则,该规则基本上捕获对根文件夹/ api / *的所有请求,并将其重写为api.v2.movi​​deo.com,尊重HTTP与HTTPS流量。

我按照这里的分步说明进行操作:http://code.movideo.com/Setting_up_IIS7_to_use_URL_Rewrite_2.0_for_Cross-Domain_XMLHttpRequest_Calls

我安装了应用程序请求路由http://www.iis.net/expand/URLRewrite 按照该页面上的所有步骤,删除了指示的标题,按照本书完成了所有操作,但我得到的只是:

HTTP Error 500.50 - URL Rewrite Module Error. 您正在寻找的资源存在问题,因此无法显示。

当我将规则从REWRITE更改为REDIRECT时,它工作正常,但它重定向,而不是重写!啊。这是怎么回事?

这是我的规则:

            <rule name="ReverseProxyInboundRule1" stopProcessing="false">
                <match url="^api/(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{CACHE_URL}" pattern="^(https?)://" />
                </conditions>
                <action type="Rewrite" url="{C:1}://api.movideo.com/{R:1}" />
                <serverVariables>
                    <set name="HTTP_ACCEPT_ENCODING" value="" />
                </serverVariables>
            </rule>

(第二个问题:安装应用程序请求路由时是否有任何问题或事情?它在我的IIS中添加了一个新的“服务器场”部分,嗯......我不知道这是什么。)< / p>

1 个答案:

答案 0 :(得分:0)

  1. 如果此规则之后有处理规则,请考虑将 stopProcessing 属性设置为true
  2. 由于您使用的是 serverVariables 节点,因此必须将服务器变量添加到服务器的allowedServerVariables集合中。您可以使用IIS UI(详情请参阅Setting HTTP request headers and IIS server variables)或从命令行执行此操作:

    %windir%\ System32 \ inetsrv \ appcmd.exe set config -section:system.webServer / rewrite / allowedServerVariables / +“[name ='boo']”/ commit:apphost