Internet Explorer/Edge(非铬)在 SameSite=None 安全时添加额外的 SameSite=Lax
Internet Explorer/Edge (not chromium) add additional SameSite=Lax when SameSite=None Secure
我在 Microsoft Dynamics 页面的 iframe 中加载了 .NET MVC 应用程序。
最初,用户将打开主页。家庭控制器重定向到登录页面:
return RedirectToAction("Index", "Login", new { returnUrl = redirectURL, error = errorMessage });
在本次更新 KB4533002 Cumulative Update for .NET SameSite 为 None 或未指定时添加 SameSite=Lax 之前是可以的。
然后我在网络配置中添加了出站规则以发送 SameSite=None;安全.
<rewrite>
<outboundRules>
<clear />
<rule name="Add SameSite" preCondition="No SameSite">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; SameSite=None" />
</rule>
<rule name="Add Secure" preCondition="No Secure">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; Secure" />
</rule>
<preConditions>
<preCondition name="No SameSite">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=None" negate="true" />
</preCondition>
<preCondition name="No Secure">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; Secure" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
这适用于 Chrome、Firefox 和最新的 Edge。
但是 Internet Explorer 和 Edge(不是 Chromium)正在添加额外的 SameSite:
HttpOnly: true
path:/
SameSite: Lax
SameSite: None
Secure: true
Screenshot from Edge Developer Tools
有人知道如何防止这种情况发生吗?
这可能是因为默认的 SameSite 设置为松散。您可以尝试根据 this link:
设置 (SameSiteMode)(-1)
来删除 SameSite 属性
On systems where these updates have been applied, you can specify the previous behavior by setting the SameSiteMode to (SameSiteMode)(-1)
. You can specify this behavior using the string Unspecified
in web.config.
更多设置方法请参考this article and this answer。
此外,还有两个类似的话题可以参考:
谢谢周宇。这很有帮助,但我将其设置为 None.
而不是 Unspecified
<sessionState mode="SQLServer" sqlConnectionString="***" ... cookieless="UseCookies" cookieSameSite="None" />
出站规则 (SameSite=None; Secure) 对我有用。
我在 Microsoft Dynamics 页面的 iframe 中加载了 .NET MVC 应用程序。 最初,用户将打开主页。家庭控制器重定向到登录页面:
return RedirectToAction("Index", "Login", new { returnUrl = redirectURL, error = errorMessage });
在本次更新 KB4533002 Cumulative Update for .NET SameSite 为 None 或未指定时添加 SameSite=Lax 之前是可以的。 然后我在网络配置中添加了出站规则以发送 SameSite=None;安全.
<rewrite>
<outboundRules>
<clear />
<rule name="Add SameSite" preCondition="No SameSite">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; SameSite=None" />
</rule>
<rule name="Add Secure" preCondition="No Secure">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; Secure" />
</rule>
<preConditions>
<preCondition name="No SameSite">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=None" negate="true" />
</preCondition>
<preCondition name="No Secure">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; Secure" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
这适用于 Chrome、Firefox 和最新的 Edge。
但是 Internet Explorer 和 Edge(不是 Chromium)正在添加额外的 SameSite:
HttpOnly: true
path:/
SameSite: Lax
SameSite: None
Secure: true
Screenshot from Edge Developer Tools
有人知道如何防止这种情况发生吗?
这可能是因为默认的 SameSite 设置为松散。您可以尝试根据 this link:
设置(SameSiteMode)(-1)
来删除 SameSite 属性
On systems where these updates have been applied, you can specify the previous behavior by setting the SameSiteMode to
(SameSiteMode)(-1)
. You can specify this behavior using the stringUnspecified
in web.config.
更多设置方法请参考this article and this answer。
此外,还有两个类似的话题可以参考:
谢谢周宇。这很有帮助,但我将其设置为 None.
而不是 Unspecified<sessionState mode="SQLServer" sqlConnectionString="***" ... cookieless="UseCookies" cookieSameSite="None" />
出站规则 (SameSite=None; Secure) 对我有用。