2013-10-30 1 views
1

사용자가 NTLM에 로그인 할 때 localhost : 8585/test.ntlm을 통해 문제가 발생하고 브라우저가 cometD를 통해 핸드 셰이크를 시도합니다. 이것은 IE8 ON WinXP (Win7의 IE8에서 작동)를 제외한 모든 단일 브라우저에서 작동합니다.IE8 NTLM Ajax no "Content-Length : 0"게시물 cometD Fiddler

IE8에서 NTLM 페이지를 통과한다고 생각 될 때마다 응답 오류가 발생할 것으로 예상되는대로 응답 본문을 보내지 않습니다. 그러나 권한 부여는 이미 /test.ntlm 페이지에 액세스하라는 메시지가 표시 될 때 로그인 할 때 발생했습니다. 필자는 실제로 IE8의 요청 헤더를보기 위해 Fiddler를 사용했으며 이상한 부분은 실제로 바이올린이 켜져있을 때 완벽하게 정상적으로 작동하고 서버에서 보이는 요청 헤더가 바이올린이 켜져 있지 않을 때와 다른 점입니다.

IE8 WITH 피들러 함께 들러

[Accept][text/javascript, text/html, application/xml, text/xml, */*] 
[Accept-Language][en-us] 
[x-prototype-version][1.6.0.2] 
[Referer][http://nldo-82-2.eur.ad.sag:8585/test.ntlm] 
[x-requested-with][XMLHttpRequest] 
[Content-Type][application/json; charset=UTF-8] 
[Accept-Encoding][gzip, deflate] 
[User-Agent][Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)] 
[Host][nldo-82-2.eur.ad.sag:8585] 
[Content-Length][0] 
[Connection][Keep-Alive] 
[Cache-Control][no-cache] -- Only added in IE 
[Cookie][JSESSIONID=1ckx2gei602sg] 
[Authorization][NTLM TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFAs4OAAAADw==] --Only happens in IE8 when Fiddler isn't on 

IE8

[Accept][text/javascript, text/html, application/xml, text/xml, */*] 
[Accept-Language][en-us] 
[x-prototype-version][1.6.0.2] 
[Referer][http://nldo-82-2.eur.ad.sag:8585/test.ntlm] 
[x-requested-with][XMLHttpRequest] 
[Content-Type][application/json; charset=UTF-8] 
[Accept-Encoding][gzip, deflate] 
[User-Agent][Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)] 
[Host][nldo-82-2.eur.ad.sag:8585] 
[Content-Length][177] 
[Connection][Keep-Alive] 
[Pragma][no-cache] 
[Cookie][JSESSIONID=1qpdgov0w07pf] 

우리는 가장 큰 차이는 볼 수 있듯이 그 IE8 w/피들러 브라우저로서 추가 된 권한 부여 헤더가 O를 내가 말할 수있는 한 멀리.

나는 무엇을해야할 지경에 이르렀다. 다른 stackoverflow 주제에 나열되어있는 MS 핫픽스 중 일부는 시도했지만 그 중 아무 것도 작동하지 않는 것으로 나타났습니다. 브라우저가 401 응답 본체를 보낼 것으로 여전히 기대했지만 일부는 제안한 것처럼 401 반환하도록 시도했지만 그 중 하나를 작동하지 않았다. Win7 용 IE8에서는 완벽하게 작동하지만 WinXP 버전에서는 완벽하게 작동한다는 것은 이상한 일입니다. 브라우저 버전은 Win7의 경우 8.0.7601.17514이고 WinXP의 경우 8.0.6001.18702입니다.

모든 제안을 환영합니다.

답변

0

메소드를 GET으로 변경하고 어떻게 진행되는지보십시오.

방금 ​​2 일 동안 ajax POST 요청 시간이 초과 된 문제를 조사했습니다. 검색 결과 SSO NTLM 인증 문제가 발견되었습니다.

Internet Explorer는 각 게시 요청에서 NTLM 인증을 확인합니다.

Fiddler는 NTLM Auth를 캐시하고 문제를 통해 암호를 통해 요청을 허용합니다.

+0

GET 메소드로 변경하는 문제는 cometd Longpulling이 POST 메소드 만 지원한다는 것입니다. 나는 Fiddler가 NTLM 인증을 캐싱했다고 생각했기 때문에 그것이 제대로 작동하는 이유가되었지만 Fiddler를 실행할 때 특별히 선택해야만하는 옵션이라고 생각했습니다. – Craig