0

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

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

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

所有 cookie 的这种行为是否相同?在这种情况下,建议的解决方法是什么?

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

4

1 回答 1

0

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

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

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

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

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

于 2013-08-06T16:28:31.067 回答