Использование ExecuteURL в качестве обработчика 404 в web.config обойдёт перезапись URL (то есть .. outboundRules), тогда как использование других responseModes не будет

У меня есть следующее правило в файле web.config, предназначенное для идентификации и перезаписи файлов cookie исходящего сеанса с обоимибезопасный а такжеHTTPOnly флаги:

<rewrite>
    <outboundRules>
        <preConditions>
            <preCondition name="MatchSessionCookies">
                <add input="{RESPONSE_SET_COOKIE}" pattern="." />
            </preCondition>
        </preConditions>

        <rule preCondition="MatchSessionCookies" name="SecureSessionCookies" enabled="true">
            <match serverVariable="RESPONSE_SET_COOKIE" pattern="^(.*sess.*)=(.+)$" />
            <action type="Rewrite" value="{R:1}={R:2}; httpOnly; secure" />
        </rule>
    </outboundRules>
</rewrite>

Это работает как задумано, до тех пор, пока httpErrors не вступит в игру:

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="/path/to/404.aspx" responseMode="ExecuteURL" />
</httpErrors>

Так что при доступе/a-page-that-exists.aspxисходящие куки-файлы ASPSESSIONID, которые записываются, успешно перезаписываются обоимибезопасный а такжеHTTPOnly флаги.

Request URL: /a-page-that-exists.aspx
Status Code: 200 OK

Set-Cookie: ASPSESSIONIDABCDEFG=...; path=/; httpOnly; secure

Проблема в доступе/a-page-that-does-NOT-exist.aspx, Похоже, что запрос [404] внутренне «направлен» наExecuteURL путь и мои правила перезаписи URL, которые у меня есть, полностью обойдены.

Request URL: /a-page-that-does-NOT-exist.aspx
Status Code: 200 OK

Set-Cookie: ASPSESSIONIDABCDEFG=...; path=/

Любые идеи о том, как изменить мои исходящие правила перезаписи, чтобы их можно было применить к [404] запросам перед передачей моему обработчику 404?

Ответы на вопрос(1)

Ваш ответ на вопрос