Een HTTP-verzoek verzenden met basisauthenticatie

Elm:
Een HTTP-verzoek verzenden met basisauthenticatie

Hoe:

Elm maakt HTTP-verzoeken met behulp van het Http-pakket. Om basisauthenticatie toe te voegen, codeer je de inloggegevens en neem je deze op in de verzoekheaders.

importeer Http
importeer Base64

type alias Model = { ... }
type Msg = HttpRequestCompleted (Resultaat Http.Fout String)

-- Gebruikersnaam en wachtwoord coderen
basicAuthHeader : String -> String -> Http.Header
basicAuthHeader gebruikersnaam wachtwoord =
    laat
        inloggegevens = gebruikersnaam ++ ":" ++ wachtwoord
        gecodeerdeInloggegevens = Base64.codeer inloggegevens
    in
    Http.header "Autorisatie" ("Basis " ++ gecodeerdeInloggegevens)

-- Het HTTP-verzoek doen
sendRequestWithBasicAuth : Cmd Msg
sendRequestWithBasicAuth =
    laat
        url = "https://example.com/protected/resource"
        verzoek =
            Http.verzoek
                { methode = "GET"
                , headers = [ basicAuthHeader "mijnGebruikersnaam" "mijnWachtwoord" ]
                , url = url
                , lichaam = Http.emptyBody
                , verwacht = Http.expectString (HttpRequestCompleted)
                , timeout = Niets
                , tracker = Niets
                }
    in
    Http.stuur HttpRequestCompleted verzoek

Wanneer de bovenstaande functie wordt aangeroepen, zal Elm een GET-verzoek uitvoeren naar de opgegeven URL met de Autorisatieheader ingesteld op de gecodeerde gebruikersnaam en wachtwoord.

Diepere Duik

Elm’s benadering van HTTP-verzoeken weerspiegelt de algehele filosofie van de taal: veilig, makkelijk te onderhouden en begrijpelijk. Het Http-pakket incorporeert verzoeken op een manier die omgaat met de Elm-architectuur.

Basisauthenticatie is zo oud als het web zelf, deel van de originele HTTP-specificatie (RFC 7617). Het is eenvoudig maar niet erg veilig aangezien de inloggegevens alleen base64-gecodeerd zijn, niet versleuteld. Daarom is het cruciaal om HTTPS te gebruiken om de transmissie te coderen.

Alternatieven voor basisauthenticatie zijn onder andere OAuth, tokens zoals JWT of API-sleutels, elk met een verhoogde complexiteit en verbeterde beveiliging. Elm ondersteunt ook deze methoden, maar vereist vaak extra pakketten of aangepaste codeerders en decodeerders.

Zie Ook