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

时间:2013-08-06 15:20:51

标签: asp.net cookies request-headers

我正在处理的搜索应用程序允许用户选择结果并以不同的格式导出它们,如EXCEL,XML等。

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

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

所有Cookie的行为是否相同?在这种情况下建议的工作是什么?

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

1 个答案:

答案 0 :(得分:0)

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

鉴于用户可以选择稍后要导出的任意项目,您需要在某处存储这些项目的ID。

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

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

如果cookie中的数据量仍然太大,您可以使用数据库查看服务器端状态。包含ExportIdItermId列的表格,您可以根据用户的操作添加或删除行,只需在网址或Cookie中发送ExportId