繁体   English   中英

如何在ExtJS HTTPRequest中传递cookie

[英]How not to pass cookies in an ExtJS HTTPRequest

我有一个应用程序在前端使用ExtJS,在服务器上使用TurboGears。 我现在开始使用CookieProvider状态管理器添加cookie来处理自定义前端。 这很酷,但每次通话都会传递cookie,这些cookie很大。 我对性能影响感到担忧。

无论长短,有没有办法阻止某些cookie在调用服务器时发送?

  • 戴夫

如果您知道您的用户使用的是现代浏览器,则可以使用HTML 5本地存储而不是Cookie。

这正是它的意思 - 在客户端本地存储数据,例如自定义。

它可以让您摆脱使用cookie时遇到的问题,例如发送到服务器以及更小的大小限制。

使我们的基于ExtJS的应用程序在没有启用cookie的情况下工作(这意味着客户端使用JS编写并使用AJAX请求与基于Java的服务器进行通信的每个请求都将创建一个新的Session-ID,因此不能分配给任何通过服务器的特定会话),我想出了覆盖ExtJS的AJAX方法的非常简单的方法,并且为每个请求添加会话ID解决了这个问题。 我从另一个线程中得到了这个想法,其中显示了如何覆盖Ext.Ajax以向每个调用添加某个参数,并使用这种方式添加会话ID,并在每个URL参数后附加“; jsessionid =”。

我相信你的最后一个回答是正确的......但是你应该分享答案而不是给它上釉......我相信你是以这种方式使用params,如果不是这是我相信完成你想要的另一种方式做。

Ext.Ajax.Request({
    url: 'path/to/file.htm',
    params: {
        jsessionid:  Ext.util.Cookies.get('jsessionid')
    },
    success: function(result, request) {
        // Callback function for successful request
    }
});

以下是我最终实现的内容:所有自定义都存储在数据库中。 当导航屏幕时,我读取当前用户的屏幕自定义,并使用它在init_component例程中初始化一个简单的基于内存的状态提供程序。 状态提供程序侦听适当的事件并更新内存中状态。 UI具有“首选项”菜单和“保存/重置”选项。 save选项将内存状态保存到服务器。 重置会从数据库中删除状态,并使用默认设置重建屏幕。 这似乎运作良好。

仅供参考:我找到的其他问题:

  • 网格没有过滤器更改的事件
  • 组合框(以及其他)没有保存状态的代码,你必须自己编写。
  • 网格中的状态是挥霍(原始问题)

我为每个屏幕实现每个状态控制一个状态设置,通常只有一个网格,但一个屏幕有一个组合加一个网格。 捆绑它们可能会更好但是时间不够......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM