VBA-XMLHTTP-klar-Authentifizierung?
Schreibe ich einen Satz VBA-Makros, in denen es verwendet das XMLHTTP-Objekt zu senden, asynchrone Anfragen an einen server. Ich schicke Basic-Authentifizierung mit:
XMLHttpReq.setRequestHeader "Authorization","Basic " & Base64EncodedUserPass
Dies funktioniert gut, die erste Zeit.
Aber wenn der Benutzer änderungen Ihrer userid/Passwort, auch wenn der code erstellt eine völlig neue XMLHttpReq-Objekt und legt diesen header, um die neuen Informationen ein, meldet es sich beim server als der erste Benutzer, vermutlich von zwischengespeicherte Anmeldeinformationen.
Wie kann ich den code "vergessen", dass ich angemeldet haben, bevor, und re-autorisieren?
Bearbeiten, wie gefordert, den relevanten Teil des Codes; es ist wirklich nicht sehr kompliziert:
myURL = "http://my.domain.com/myscript.cgi"
Dim oHttp As New MSXML2.XMLHTTP
oHttp.Open "POST", myURL, False
oHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded'"
oHttp.setRequestHeader "Authorization","Basic " & Base64EncodedUsernamePassword
oHttp.send "PostArg1=PostArg1Value"
Result = oHttp.responseText
- Wenn ich das URL-format http[s]://user:password@host/ dann kann ich austauschbar verwenden Sie unterschiedliche Benutzernamen, aber das scheint weniger sicher irgendwie. Vielleicht ist dies der einzige Weg, es zu tun, obwohl?
- Haben Sie versucht, löschen IE Geschichte? mrexcel.com/forum/...
- Ich will nicht, um die gesamte Browser-Verlauf, die nur für diese eine Aufgabe. Die zugrunde liegenden Makros werden an die Kunden vertrieben als Teil eines größeren Produkts, und ich fühle mich nicht wie ich einnehmen sollte, die viel direkte Kontrolle über Ihre Internet Explorer-cache.
- OK. Können Sie zeigen Sie Ihren code?
- Code Hinzugefügt, um die Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Fragen besprochen wurden, die in vielerlei Hinsicht aufgrund der großen Browser unterschiedliche Implementierungen von caching-Methoden.
Ich werde Euch geben, was für mich gearbeitet und dann die Quellen, die ich fand auf dieser Funktion.
Die einzige Lösung konnte ich stieß, war die Kraft, die der browser nicht den cache die Anfrage.
Scheint es, dass
Cache-Control
funktioniert auf den meisten Browsern undPragma
nur auf Firefox und nicht IE (weiß nicht, warum...)If-Modified-Since
wird verwendet für den IE, da der IE verwendet verschiedene Einstellungen in seinem eigenen Algorithmus, um zu bestimmen, ob oder nicht die Anforderung zwischengespeichert werden sollen. XMLHttpRequest scheinen nicht so behandelt werden, als die gleiche wie die HTTP-Antworten.Vorsichtig : Mit diesem code werden Sie müssen
username
undpassword
jedes mal, wenn ein neues Objekt erstellt wird. Vielleicht solltest du ein neues Objekt erstellen, instanziieren Sie es einmal und dann zerstören Sie Sie nach Gebrauch. In zwischen müssten Sie alle Ihre Anfragen bearbeitet, die in unterschiedlichen Funktionen mit nur einer Authentifizierung.Quellen
MSDN-Methode setRequestHeader
MSDN IXMLHTTPRequest
XMLHTTPREQUEST-CACHING-TESTS
XMLHttpRequest und Caching