Использование 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?