Я изменил несколько ответов SO, чтобы предложить переписать этот URL, который добавляет SameSite=None
к сеансовым cookie-файлам, а также удаляет SameSite=None
из всех cookie-файлов для большинства несовместимых браузеров. Цель этого переписывания состоит в том, чтобы сохранить «устаревшее» поведение до Chrome 80. Оно конкретно охватывает Safari для MacOSX и сценарий iOS 12.x, о котором вы упомянули.
Полная запись в моем Блог Coder Frontline :
<rewrite>
<outboundRules>
<preConditions>
<!-- Checks User Agent to identify browsers incompatible with SameSite=None -->
<preCondition name="IncompatibleWithSameSiteNone" logicalGrouping="MatchAny">
<add input="{HTTP_USER_AGENT}" pattern="(CPU iPhone OS 12)|(iPad; CPU OS 12)" />
<add input="{HTTP_USER_AGENT}" pattern="(Chrome/5)|(Chrome/6)" />
<add input="{HTTP_USER_AGENT}" pattern="( OS X 10_14).*(Version/).*((Safari)|(KHTML, like Gecko)$)" />
</preCondition>
</preConditions>
<!-- Adds or changes SameSite to None for the session cookie -->
<!-- Note that secure header is also required by Chrome and should not be added here -->
<rule name="SessionCookieAddNoneHeader">
<match serverVariable="RESPONSE_Set-Cookie" pattern="((.*)(ASP.NET_SessionId)(=.*))(SameSite=.*)?" />
<action type="Rewrite" value="{R:1}; SameSite=None" />
</rule>
<!-- Removes SameSite=None header from all cookies, for most incompatible browsers -->
<rule name="CookieRemoveSameSiteNone" preCondition="IncompatibleWithSameSiteNone">
<match serverVariable="RESPONSE_Set-Cookie" pattern="(.*)(SameSite=None)" />
<action type="Rewrite" value="{R:1}" />
</rule>
</outboundRules>
</rewrite>
Это должно работать для большинства ASP. Net и ASP. Net базовых приложений, хотя более новые Frameworks имеют надлежащий код и конфигурацию варианты, чтобы позволить вам контролировать это поведение. Я бы порекомендовал изучить все доступные вам варианты, прежде чем использовать мою перезапись выше.