Visual Basic for Applications:
Skicka en HTTP-begäran med grundläggande autentisering
Hur man gör:
I VBA kan du använda biblioteket Microsoft XML, v6.0
(MSXML2) för att skicka HTTP-begäranden med grundläggande autentisering. Detta innebär att du ställer in begäranstokens "Authorization"
-header för att inkludera referenserna i ett base64-kodat format. Här är en steg-för-steg-guide:
Referera till MSXML2: Först, se till att ditt VBA-projekt refererar till biblioteket
Microsoft XML, v6.0
. I VBA-editorn, gå till Verktyg > Referenser och kryssa iMicrosoft XML, v6.0
.Skapa och skicka HTTP-begäran: Använd följande VBA-kodsnutt som en guide. Ersätt
"your_username"
och"your_password"
med dina faktiska referenser och justera URL:en vid behov.Dim XMLHttp As Object Set XMLHttp = CreateObject("MSXML2.XMLHTTP") Dim url As String url = "http://example.com/api/resource" ' Ersätt med den faktiska URL:en Dim base64Credentials As String base64Credentials = EncodeBase64("your_username:your_password") XMLHttp.Open "GET", url, False XMLHttp.setRequestHeader "Authorization", "Basic " & base64Credentials XMLHttp.send Debug.Print XMLHttp.responseText ' Skriver ut svaret till omedelbart fönster
Koda referenser i base64: VBA har ingen inbyggd funktion för base64-kodning, men du kan använda denna anpassade
EncodeBase64
-funktion:Function EncodeBase64(text As String) As String Dim arrData() As Byte arrData = StrConv(text, vbFromUnicode) Dim objXML As MSXML2.DOMDocument60 Dim objNode As MSXML2.IXMLDOMElement Set objXML = New MSXML2.DOMDocument60 Set objNode = objXML.createElement("b64") objNode.dataType = "bin.base64" objNode.nodeTypedValue = arrData EncodeBase64 = objNode.Text End Function
Detta kommer att skicka en GET-begäran till http://example.com/api/resource
med de angivna grundläggande autentiseringsreferenserna och skriva ut svaret.
Fördjupning
Metoden som används här, även om den är effektiv för enkla användningsfall, bygger på schemat för grundläggande autentisering, som skickar referenser i ett lätt avkodningsbart format (base64-kodning är inte kryptering). På grund av sin sårbarhet, särskilt i icke-HTTPS-sammanhang, rekommenderas inte grundläggande autentisering för att överföra känslig information över internet utan ytterligare säkerhetslager som SSL/TLS.
Historiskt sett var grundläggande autentisering en av de första metoderna som utvecklades för att kontrollera åtkomst till webbresurser. Idag är säkrare och mer flexibla autentiseringsstandarder, såsom OAuth 2.0, generellt att föredra för nya applikationer. Med tanke på VBA:s begränsningar och externa beroenden som krävs för mer avancerade autentiseringsmetoder använder utvecklare ofta VBA i interna eller mindre säkerhetskritiska miljöer eller använder det som ett steg för att snabbt prototypa idéer.
När du använder VBA för HTTP-begäranden, kom ihåg att varje version av MSXML-biblioteket kan stödja olika funktioner och säkerhetsstandarder. Använd alltid den mest aktuella versionen som är kompatibel med din applikation för att säkerställa bättre säkerhet och prestanda. Dessutom, överväg de miljömässiga begränsningarna och potentiellt föråldrade funktioner när du väljer VBA för nya projekt, särskilt de som kräver säker HTTP-kommunikation. Andra programmeringsmiljöer eller språk kan erbjuda mer robusta, säkra och underhållbara lösningar för liknande uppgifter.