Как найдено здесь , правило UrlRewrite может справиться с этим.
Приведенные ниже правила обрабатывают его для добавления HttpOnly
и Secure
, если они отсутствуют в файле cookie ASPSESSIONID
. (Для других файлов cookie, как правило, они испускаются ASP-кодом сайта: лучше обрабатывать это непосредственно в коде, отвечающем за них.)
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Add HttpOnly" preCondition="No HttpOnly">
<match serverVariable="RESPONSE_Set_Cookie" pattern="\s*ASPSESSIONID.*" />
<action type="Rewrite" value="{R:0}; HttpOnly" />
</rule>
<rule name="Add Secure" preCondition="No Secure">
<match serverVariable="RESPONSE_Set_Cookie" pattern="\s*ASPSESSIONID.*" />
<action type="Rewrite" value="{R:0}; Secure" />
<conditions>
<add input="{HTTP_HOST}" pattern="localhost" negate="true" />
</conditions>
</rule>
<preConditions>
<preCondition name="No HttpOnly">
<add input="{RESPONSE_Set_Cookie}" pattern="; HttpOnly" negate="true" />
</preCondition>
<preCondition name="No Secure" logicalGrouping="MatchAll">
<add input="{RESPONSE_Set_Cookie}" pattern="; Secure" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
Если UrlRewrite не установлен на сервере IIS, это приведет к сбою сайта.
Обратите внимание, что правило Secure
не должно применяться, если доступ к сайту осуществляется по закону http
вместо https
, то есть условие не испускать его при локальном просмотре. Если Secure
отправляется на сайт, доступ к которому осуществляется через http
со стороны клиента, клиент не будет отправлять cookie обратно на сервер.
(я не тестирую входящий протокол, потому что сайты, на которых я работаю, в любом случае не должны быть доступны на http
, исключая, в конечном итоге, непосредственно с их хост-сервера или балансировщика нагрузки.)
Ранее я пытался использовать asp / session / keepSessionIdSecure , но это не имеет никакого эффекта (по крайней мере, для сайта за балансировщиком нагрузки, завершающего https и обращающегося к серверу сайта через http). Этот параметр является современной версией (IIS 7+) значения метабазы AspKeepSessionIDSecure
, на которое указывает ответ AnthonyWJones .