gpt4 book ai didi

internet-explorer - IE 或边缘打印对话框在没有 session 的情况下向服务器发送请求(因为 SameSite=Lax on session cookie)

转载 作者:行者123 更新时间:2023-12-04 10:56:20 26 4
gpt4 key购买 nike

我有一个asp.net 站点,用户可以登录该站点,成员可以通过Ctrl+P 获取报告或打印页面。

最近当我的成员(member)在 IE 中打开我的网站并尝试打印时,他们被注销了!

为什么?
因为 IE 打印对话框向服务器发送一些请求而没有 session cookie,所以 StateServer 为此客户端释放新 session ,然后用户注销。

为什么打印对话框发送请求?
我不知道,但我猜 IE 打印对话框尝试呈现页面并准备好打印。

为什么打印对话框不发送当前 session cookie?
因为 .net 的新更新为 session cookie 设置了 SameSite=lax,所以来自打印对话框的请求无法发送当前 session cookie。
https://support.microsoft.com/en-us/help/4524419/kb4524419

如何防止 IE 打印对话框发送请求?
或者我如何强制 IE 打印对话框发送相同的 session cookie?

任何的想法?

已编辑:
我创建了一个示例项目来展示这个问题。您可以下载我的项目并在 IIS 上托管,然后打开 Default.Aspx 并尝试在 IE(或边缘)中打印该页面。
你会看到我的问题。
https://easyupload.io/w6vvpy

最佳答案

我确认这个问题。现在作为一种解决方法,一旦 SameSite 属性被删除,问题就会消失。这不是最佳解决方案,但目前似乎有效。

var cookies = this.Response.Cookies;
FormsAuthentication.SetAuthCookie( "JohnDoe", rememberMe );
var allCookies = cookies.AllKeys.Select( key => cookies[key] ).ToList();
allCookies.ForEach( cookie => cookie.SameSite = (SameSiteMode)(-1) );

In ASP.NET Core 3.0 and later the SameSite defaults were changed to avoid conflicting with inconsistent client defaults. The following APIs have changed the default from SameSiteMode.Lax to -1 to avoid emitting a SameSite attribute for these cookies



https://docs.microsoft.com/en-us/aspnet/core/security/samesite

我们所做的是,创建了 HttpModule,它在响应中查找 cookie 并相应地修改它们。

关于internet-explorer - IE 或边缘打印对话框在没有 session 的情况下向服务器发送请求(因为 SameSite=Lax on session cookie),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59151616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com