2010-11-29 107 views
0

我正在爲個人項目構建RESTful API,並且管理區域使用Ext。由於API需要令牌通過自定義頭「X-API-Auth」來回傳遞,因此我需要將其添加到Ext所做的每個Ajax請求中。JsonStore.autoLoad = true時會忽略Ext.Ajax.defaultHeaders

例如,在用戶管理區域,我有一個使用JsonStore的GridPanel,顯示註冊用戶列表。 'autoLoad'屬性設置爲TRUE。這樣,當你第一次訪問屏幕時,GridPanel會自動填充。

任何渲染之前,我有以下標題:

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

其中 '__API_KEY' 是令牌。

現在,我的理解是這些自定義標題現在應該隨每個Ajax調用一起發送。當我第一次訪問成員列表頁面時,我得到了從API拋出的403 Forbidden響應。這是因爲初始的Ajax調用GridPanel使得沒有發送所需的頭文件。 API運行正常,因爲沒有標題,它無法驗證請求。

現在,如果點擊與GridPanel的JsonStore關聯的附帶PagingToolbar組件中的「reload」按鈕,它會發送標題。對手動調用的成員列表端點的所有Ajax調用都會產生所需的結果。

爲什麼商店上的「autoLoad」不尊重'defaultHeaders'屬性是否有原因?如果任何人都可以闡明這一點,將不勝感激。我也在Sencha論壇上問過這個問題,似乎沒有人能夠回答。

謝謝!

回答

1

好的,所有的寫作都不是。我搞亂了操作順序。所有這些JavaScript文件都由Ext Designer創建。我以爲我將'defaultHeaders'屬性放在執行路徑的頂部,但事實證明我錯了。

全部固定。

我現在要去砍自己了。

/永遠孤單