为 XSHM 修复添加了随机参数。 IIS/ASP.NET 上的 URL 的长度是否有限制?

Added random parameter for XSHM fix. Is there a limit to the length of a URL on IIS/ASP.NET?

在我的组织中,我们实施了一项修复跨站点历史操作的建议,方法是在重定向的 URL 末尾附加一个随机 GUID。

例如:

Response.Redirect($"{path}&paramX={Guid.NewGuid():N}");

因此,如果用户访问了页面 https://www.example.com/default.aspx,则重定向行为如下:

Response.Redirect("https://www.example.com/default.aspx?&paramX=d11712a771294de8a6fc0c66e92954fc");

如果在用户已经被重定向一次或多次时发生重定向,问题或问题就会出现。在这种情况下,每次都会附加重复的参数,如下所示:

Response.Redirect("https://www.example.com/default.aspx?&paramX=d11712a771294de8a6fc0c66e92954fc&paramX=ff4bc6a838684b198060c70091b300e2");

如果发生过多的重定向,这可能 运行 的 URL 长度是否有限制?

如果是这样,我的解决方案是每次都使用 RegEx 检测参数是否存在,并使用 RegEx Replace( ) 替换它,而不是每次都追加。

是的,它存在 url 的长度限制。这取决于用户使用的浏览器。这里我列出了一些浏览器的限制供大家参考:

IE: no more than 2048 byte
Chrome: no more than 8182 byte
FireFox: no more than 65536 byte
Safari: no more than 80000 byte

所以我认为超过url的限制长度并不容易,但我建议你做一些改进,不要将越来越多的相同参数附加到url。