CookieSameSite 속성은 많은 이전 프레임 워크에서 사용할 수 없습니다. 귀하의 환경에서 허용되는 답변이 지원되지 않는 상황이라면 계속 읽으십시오!
SameSite=None
세션 쿠키에 추가 하고 가장 호환되지 않는 브라우저의 모든 쿠키 SameSite=None
에서 제거 하는이 URL 다시 쓰기를 제공하기 위해 여러 가지 SO 답변을 수정했습니다 . 이 재 작성의 목표는 Chrome 80 이전의 "레거시"동작을 유지하는 것입니다.
내 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.*)" />
<!-- Use this regex if your OS/framework/app adds SameSite=Lax automatically to the end of the cookie -->
<!-- <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>
최신 Framework에는 이러한 동작을 제어 할 수있는 적절한 코드 및 구성 옵션이 있지만 대부분의 ASP .Net 및 ASP .Net Core 응용 프로그램에서 작동합니다. 위의 재 작성을 사용하기 전에 사용 가능한 모든 옵션을 조사하는 것이 좋습니다.