2010-11-29 3 views
0

저는 개인 프로젝트 용 RESTful API를 만들고 관리 영역에는 Ext를 사용합니다. API가 사용자 정의 헤더 'X-API-Auth'를 통해 앞뒤로 전달되는 토큰을 필요로하기 때문에 Ext에서 작성한 모든 Ajax 요청에이를 추가 할 수 있어야합니다.JsonStore.autoLoad = true 일 때 Ext.Ajax.defaultHeaders가 무시됩니다.

예를 들어, 사용자 관리 영역에서 JsonStore를 사용하는 GridPanel에 등록 된 사용자 목록을 표시합니다. 'autoLoad'속성은 TRUE로 설정됩니다. 이렇게하면 처음 화면을 방문하면 GridPanel이 자동으로 채워집니다. 아무것도가 렌더링되기 전에

, 나는 다음과 같은 헤더를 포함 : '__API_KEY은'토큰입니다

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

.

이제는 이러한 사용자 정의 헤더가 모든 Ajax 호출과 함께 전송되어야한다는 것을 이해했습니다. 처음으로 회원 목록 페이지를 방문하면 API에서 발생하는 403 Forbidden 응답이 표시됩니다. 이것은 GridPanel이 필요한 Ajax 호출이 필요한 헤더를 전송하지 않기 때문입니다. API가 헤더없이 요청을 인증 할 수 없으므로 API가 제대로 작동합니다.

이제 GridPanel의 JsonStore와 관련된 PagingToolbar 구성 요소에서 '다시로드'버튼을 클릭하면 헤더가 전송됩니다. 수동으로 호출 된 구성원 목록 엔드 포인트에 대한 모든 Ajax 호출은 원하는 결과를 산출합니다.

Store의 'autoLoad'가 'defaultHeaders'속성을 따르지 않는 이유가 있습니까? 누군가가 이것에 대해 약간의 빛을 비출 수 있다면 그것은 크게 감사 할 것입니다. 나는 Sencha 공개 토론에 이것을 요구하고 아무도는 대답이있는 것을 보이지 않는다.

감사합니다.

답변

1

좋아요, 그 모든 글은 그렇지 않았어. 나는 수술 명령을 엉망으로 만들었다. 이러한 모든 JavaScript 파일은 Ext Designer에서 만들었습니다. 실행 경로의 맨 위에 'defaultHeaders'속성을 배치하고 있다고 생각했지만 잘못되었습니다.

모두 수정되었습니다.

나는 지금 스스로자를 것입니다.

/영원히

관련 문제