Cookie 的内容是否始终成为请求标头的一部分?



我正在开发的搜索应用程序允许用户选择结果,并以EXCEL、XML等不同格式导出。

所选结果的唯一id使用JavaScript存储在cookie中,以便稍后可以发布这些信息以导出搜索结果。

问题是,当cookie的内容变得相当大时,Web应用程序防火墙会阻止请求。经过分析,我发现所有cookie内容都成为请求头的一部分,使其超过了防火墙允许的大小。

这种行为对所有cookie都一样吗?在这种情况下,建议如何解决?

技术是在IIS 7.5服务器上的ASP.NET 4.0。

是的,当URL与cookie的路径匹配时,cookie将包含在向服务器发出的每个请求中。

考虑到用户可以选择以后要导出的任意项目,您需要将这些项目的ID存储在某个位置。

将它们以明文形式存储在cookie中,显然会导致防火墙出现问题。避免这种情况的一个选项是压缩ID。例如,如果ID是123456123459123463,那么您实际上只需要存储123456;3.4(最低数字和增量),但这种形式可能很难处理,只会在某些情况下受益。

另一种选择是使用例如gzip格式压缩cookie数据。但是,如果使用JavaScript编写cookie,这可能并不简单(尽管您可能只将当前页面上的项目写成纯文本,并在用户在页面之间移动时让服务器压缩它们)。

如果cookie中的数据量仍然过大,您可以查看服务器端状态,例如使用数据库。具有ExportIdItermId列的表,您可以根据用户的操作在其中添加或删除行,并且只需要在URL或cookie中发送ExportId

相关内容

最新更新