2011-04-11 4 views
9

같은 브라우저에서 두 개의 Wicket 웹 응용 프로그램을 열면 부분 새로 고침 대신 전체 페이지 새로 고침이 표시되므로 AJAX 충돌이있는 것으로 보입니다. 응용 프로그램이 다른 서버 및 포트 번호에 있어도 마찬가지입니다.왜 여러 Wicket 응용 프로그램을 실행하면 AJAX 충돌이 발생합니까?

위키 (tabbedPanel, onTimerAutoRefresh)에서 제공하는 기본 JavaScript 만 사용합니다.

아마도 대체 기능과 관련이 있습니다.

하나의 웹 응용 프로그램 만 열려있는 경우 문제없이 작동합니다.

예제 사이트에는 문제가 없으므로 내 응용 프로그램의 구성에 문제가 있다고 생각합니다.

wicket-ajax.js, 라인 970 :

try { 
    redirectUrl = t.getResponseHeader('Ajax-Location'); 
} catch (ignore) { // might happen in older mozilla 
} 

// the redirect header was set, go to new url 
if (typeof(redirectUrl) != "undefined" && 
    redirectUrl != null && 
    redirectUrl != "") { 
    //redirect and do a full page refresh (window.location = redirectUrl); 
}else{ 
    // do the normal ajax functionality 
} 

모든 것이 괜찮습니다, 헤더에는 아약스 - 위치이 없습니다.

[Ajax-Location: .]

+0

도움이 될만한 세부 정보가 필요하다고 생각합니다. –

+0

첫 번째 주제가 수정되고 더 많은 설명이 추가되었습니다. – Benoit

+0

포트가 다른 경우에도 동일한 도메인이 사용되는 경우에만 발생합니다. 하지만 도메인을 변경하면 문제가 없습니다. "partialajax"동작의 개찰구가있는 프로젝트 예 "페이지가 만료되었습니다. 요청한 페이지가 만료되었습니다." 오류. – Benoit

답변

8

당신이 루트 컨텍스트가 있음을 확인할 수 있습니다 : 두 번째 웹 응용 프로그램이 같은 브라우저에로드되면, 다음 첫 번째로드 된 웹 응용 프로그램의 다음 AJAX 요청 헤더에이 줄을 얻는다 귀하의 응용 프로그램의 다른 무엇입니까? 그렇지 않으면 쿠키 수준에서 충돌이 발생할 수 있습니다. 호스트 이름과 경로를 기반으로 저장됩니다. 두 응용 프로그램의 컨텍스트 경로가 "/"이면 쿠키 값을 덮어 씁니다. 당신이 보는 갈등이 어디 있나.

+0

실제로 contextPath는 두 응용 프로그램에서 동일합니다. – Benoit

+0

해결 방법이 있습니까? 응용 프로그램 수준에서 세션 쿠키 이름을 설정하는 것과 비슷합니까? – aioobe

+0

예, SessionCookieConfig를 사용하여 그렇게 할 수 있습니다. 나는 결코 시도하지 않았다. – bernardn

관련 문제