2009-08-31 2 views
3

다음 코드는 xmlhttp 클래스의 서버 측 개체를 만드는 코드입니다. 기본 인증이 필요한 사이트에 연결하려고합니다. 아래 코드를 사용하여이 작업을 수행 할 수 있습니다.XmlHttp 요청 기본 인증 문제

무엇이 문제입니까? 그럼 공개 통화를 사용하여 자격 증명을 전달합니다. 그것만으로는 충분하지 않습니다. 수동으로 계산 된 base64로 인코딩 된 사용자 이름 : 암호 조합을 사용하여 권한 부여 헤더를 설정해야합니다. 공개 통화에 자격 증명을 전달하지 않고 헤더를 설정하려고하면 실패합니다. 미쳤다고 불러주세요.하지만 자격증을 공개 할 때해야 할 일은 전부입니다. 헤더를 설정하면 그 일을해야합니다. 권리? 두 가지를하는 것은 옳지 않은 것처럼 보입니다. 권리?

이것은 버그입니까?

추가 배경은 다음과 같습니다 ommitted되는 두 항목 중 하나가 HTTP 상태 인 경우 ASP 클래식 오류를 수신 을 IIS 401 : "당신은 당신이 볼 수있는 권한이 없습니다 이 페이지를 볼 수있는 권한이 없습니다 웹 브라우저가 웹 서버가 받아들이도록 구성되지 않은 WWW-Authenticate 헤더 필드를 보내므로 사용자가 제공 한 자격 증명을 사용하여이 디렉터리 또는 페이지를 엽니 다. " IIS는 요청을하기 때문에

나는

Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0") 
xmlhttp.setTimeouts 5000, 5000, 10000, 10000 'ms - resolve, connect, send, receive 
xmlhttp.open "GET", "http://example.com/", False, "username", "password" 
xmlhttp.setRequestHeader "Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ=" 
xmlhttp.send 
+1

당신은 확실히 검사 할 수 있습니다 Fiddler와 같은 요청. ServerXMLHTTP는 WinHTTP를 기반으로합니다 (http://www.fiddler2.com/fiddler/help/hookup.asp#Q-WinH 참조). TTP – EricLaw

+1

@ Eric : OP가 IIS 서버에서이를 수행해야 할 수도 있지만 권한이 있거나 없을 수도 있습니다. – AnthonyWJones

답변

3

난 당신이 MSXML2에로 요약 할 수있다 this 알려진 제한 (또는 버그)을 타격하고 생각 :-(피들러와 함께 검사 할 수 아니에요 부족 (또는 잘못된 가짐) 정확하게 당신이하고있는 것처럼 인증 헤더를 직접 추가하여이 문제를 (잘못-실시 협상을 우회) 강제로 의미 "협상"인증 메커니즘을 지원합니다.

+0

감사합니다.이 링크는 내가 겪고있는 것을 완벽하게 요약합니다. 나는 이것이 계속 진행되고 있다고 생각했다. 나는 단지 내가 물건을 오염시키지 않도록하고 싶었다. –

+0

WinHTTP COM 개체를 직접 사용하면 이와 동일한 문제가 발생합니다. 나는 이것이 오래 전에 고쳐지지 않았다는 것을 믿을 수 없다. – Bob77