【问题标题】:Using URL Rewrite for Cross-Domain Http Requests对跨域 Http 请求使用 URL 重写
【发布时间】:2014-01-20 02:32:30
【问题描述】:

我正在尝试编写一个入站重写规则,该规则基本上捕获对根文件夹 /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 中添加了一个新的“服务器场”部分,嗯……我不知道这是怎么回事。)

【问题讨论】:

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


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

      %windir%\System32\inetsrv\appcmd.exe 设置配置 -section:system.webServer/rewrite/allowedServerVariables /+"[name='boo']" /commit:apphost

    【讨论】:

    • 我通过更改 stopProcessing="true" 解决了这个问题。既然你有唯一的答案,我选择你的。 :)
    猜你喜欢
    • 2016-04-25
    • 2013-01-17
    • 2011-09-09
    • 2014-04-28
    • 2018-09-09
    • 2015-07-25
    • 2014-11-24
    • 2014-11-19
    • 1970-01-01
    相关资源
    最近更新 更多