IIS重写如何拦截设置的cookie值

时间:2016-05-20 16:37:50

标签: windows server iis-7.5 url-rewrite-module

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Rewrite requests" enabled="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="https://site1.domain1.net/{R:0}" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="Rewrite outbound" enabled="true">
                    <match filterByTags="None" pattern="(.*)site1\.domain1\.net(.*)" />
                    <action type="Rewrite" value="{R:1}site2.domain2.com{R:2}" />
                </rule>
                <rule name="Rewrite cookie">
                    <match serverVariable="{HTTP_COOKIE}" pattern="(.*)site1\.domain1\.net(.*)" />
                    <action type="Rewrite" value="{R:1}site2.domain2.com{R:2}" />
                </rule>
                <preConditions>
                </preConditions>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

好的,所以我有一个前端服务器,可以通过site2.domain2.com访问,并且所有流量都应该被重写为site1.domain1.net,这非常容易。我的问题是在site1.domain1.net上运行的站点为它运行的应用程序写了一堆带有一堆非标准值的cookie。我需要能够更改写入cookie的值以进行登录。

我需要定位的行在

之下
https%3a%2f%2fsite1.domain1.net%2flgn%2fauth2%2fagent%2fsrms%2frefresh

它没有任何标准标签,如url = value或host = value它只是上面的行,我需要捕获site1.domain1.net部分并更改为site2.domain2.com但没有太多运气。

您可以在我尝试执行此操作的顶部代码中看到,但由于我对使用Cookie不太了解,因此未成功。建议?

1 个答案:

答案 0 :(得分:0)

我很接近,但没有使用正确的东西,虽然我试图解决了一堆更多的试验和错误。

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="Rewrite requests" enabled="true">
                        <match url="(.*)" />
                        <action type="Rewrite" url="https://site1.domain1.net/{R:0}" />
                    </rule>
                </rules>
                <outboundRules>
                    <rule name="Rewrite outbound" enabled="true">
                        <match filterByTags="None" pattern="(.*)site1\.domain1\.net(.*)" />
                        <action type="Rewrite" value="{R:1}site2.domain2.com{R:2}" />
                    </rule>
                    <rule name="Modify Cookie">
                    <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" />
                    <conditions>
                            <add input="{R:0}" pattern="(.*)site1\.domain1\.net(.*)" />
                    </conditions>
                    <action type="Rewrite" value="{C:1}site2.domain2.com{C:2}" />
                </rule>
                </outboundRules>
            </rewrite>
        </system.webServer>
    </configuration>