代码之家  ›  专栏  ›  技术社区  ›  Wilhelm Murdoch

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

  •  0
  • Wilhelm Murdoch  · 技术社区  · 14 年前

    我正在为个人项目构建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'
    };
    

    其中,'\u API_KEY'是令牌。

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

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

    存储上的“自动加载”不尊重“defaultHeaders”属性是否有原因?如果有人能对此有所了解,我们将不胜感激。我在森查论坛上也问过这个问题,似乎没有人有答案。

    谢谢!

    1 回复  |  直到 14 年前
        1
  •  1
  •   Wilhelm Murdoch    14 年前

    好吧,所有的写作都是为了不。我搞乱了行动的顺序。所有这些JavaScript文件都是由Ext设计器创建的。我以为我把'defaultHeaders'属性放在执行路径的顶部,但结果发现我错了。

    都修好了。

    我现在要去割伤自己了。

    /永远孤独