当JsonStore.autoLoad = true时,Ext.Ajax.defaultHeaders被忽略

时间:2010-11-29 09:50:05

标签: ajax extjs restful-authentication

我正在为个人项目构建RESTful API,管理区域使用Ext。由于API需要通过自定义标头“X-API-Auth”来回传递令牌,因此我需要能够将其添加到Ext发出的每个Ajax请求中。

例如,在用户管理区域,我有一个GridPanel,使用JsonStore,显示注册用户列表。 'autoLoad'属性设置为TRUE。这样,当您第一次访问屏幕时,将自动填充GridPanel。

在呈现任何内容之前,我包含以下标题:

Ext.Ajax.defaultHeaders = {
    'X-API-Auth' : __API_KEY,
    'Accept' : 'application/json'
};

其中'__API_KEY'是令牌。

现在,我的理解是现在应该在每个Ajax调用时发送这些自定义标头。当我第一次访问成员列表页面时,我从API中获得了403 Forbidden响应。这是因为GridPanel发出的初始Ajax调用没有发送所需的头文件。 API正常运行,因为没有标头,它无法验证请求。

现在,如果我单击与GridPanel的JsonStore关联的包含的PagingToolbar组件中的“重新加载”按钮,它就会发送标头。对手动调用的成员列表端点的所有Ajax调用都会产生所需的结果。

商店的'autoLoad'是否有理由不尊重'defaultHeaders'属性?如果有人能够对此有所了解,我将不胜感激。我也在Sencha论坛上问了这个,似乎没有人有答案。

谢谢!

1 个答案:

答案 0 :(得分:1)

好吧,所有写作都不是。我搞砸了操作的顺序。所有这些JavaScript文件都是由Ext Designer创建的。我以为我把'defaultHeaders'属性放在执行路径的顶部,但事实证明我错了。

全部修复。

我现在要去削减自己。

/永远孤独