2009-08-31 4 views
3

J'ai le code suivant qui crée un objet côté serveur de la classe xmlhttp. J'essaie de me connecter à un site qui nécessite une authentification de base. Je suis capable de faire fonctionner cela avec le code ci-dessous.XmlHttp Demander l'authentification de base Problème

Quel est le problème? Eh bien, je passe les informations d'identification en utilisant l'appel ouvert. Cela seul ne suffit pas. Je dois également définir l'en-tête d'autorisation avec le nom d'utilisateur codé en base64: mot de passe. Si j'essaie de définir l'en-tête sans transmettre les informations d'identification à l'appel ouvert, cela échoue. Appelez-moi fou, mais quand je passe les informations d'identification à l'ouverture, c'est tout ce que je devrais faire. Si je règle l'en-tête, c'est tout ce que je devrais faire. Droite? Faire les deux semble que quelque chose ne va pas. Droite?

Est-ce un bug ou un petit problème?

fond supplémentaire est: IIS 5 & ASP classique L'erreur reçue lorsque l'un des deux éléments est omises est un état HTTP 401: « Vous n'êtes pas autorisé à afficher cette page Vous n'êtes pas autorisé à voir ce répertoire ou cette page utilisant les informations d'identification que vous avez fournies car votre navigateur Web envoie un champ d'en-tête WWW-Authenticate que le serveur Web n'est pas configuré pour accepter. "

Depuis IIS fait la demande, je ne suis pas en mesure d'inspecter avec Fiddler :-(

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

Vous pouvez certainement inspecter de telles demandes avec Fiddler. ServerXMLHTTP est basé sur WinHTTP, voir http://www.fiddler2.com/fiddler/help/hookup.asp#Q-WinH TTP – EricLaw

+1

@Eric: Bien que le PO doive le faire sur le serveur IIS qu'il peut ou ne peut pas avoir la permission de faire. – AnthonyWJones

Répondre

3

Je crois que vous êtes frappé this limitation connue (ou bug) qui peut se résumer à MSXML2 manquant (ou incorrect) de prise en charge des mécanismes d'authentification «négociés», ce qui signifie que vous devez forcer le problème (contourner la négociation incorrecte) en ajoutant l'en-tête d'autorisation vous-même pendant que vous faites

+0

Merci, ce lien résume ce que je vis parfaitement. Je pensais que c'était ce qui se passait, je voulais juste m'assurer que je n'embrassais pas les choses. –

+0

L'utilisation de l'objet COM WinHTTP pose directement le même problème. Je ne peux pas croire que cela n'a pas été réglé depuis longtemps. – Bob77

Questions connexes