Elm:
การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน
วิธีการ:
Elm ทำการร้องขอ HTTP โดยใช้แพ็คเกจ Http
ในการเพิ่มการตรวจสอบสิทธิ์พื้นฐาน คุณต้องเข้ารหัสข้อมูลประจำตัวและรวมไว้ในส่วนหัวของคำขอ
import Http
import Base64
type alias Model = { ... }
type Msg = HttpRequestCompleted (Result Http.Error String)
-- การเข้ารหัสชื่อผู้ใช้และรหัสผ่าน
basicAuthHeader : String -> String -> Http.Header
basicAuthHeader username password =
let
credentials = username ++ ":" ++ password
encodedCredentials = Base64.encode credentials
in
Http.header "Authorization" ("Basic " ++ encodedCredentials)
-- การทำการร้องขอ HTTP
sendRequestWithBasicAuth : Cmd Msg
sendRequestWithBasicAuth =
let
url = "https://example.com/protected/resource"
request =
Http.request
{ method = "GET"
, headers = [ basicAuthHeader "myUsername" "myPassword" ]
, url = url
, body = Http.emptyBody
, expect = Http.expectString (HttpRequestCompleted)
, timeout = Nothing
, tracker = Nothing
}
in
Http.send HttpRequestCompleted request
เมื่อฟังก์ชันด้านบนถูกเรียก เอล์มจะทำการร้องขอแบบ GET ไปยัง URL ที่ระบุโดยมีส่วนหัว Authorization ถูกตั้งค่าเป็นชื่อผู้ใช้และรหัสผ่านที่ได้รับการเข้ารหัส
ลงลึกกว่านั้น
วิธีการของ Elm ในการร้องขอ HTTP เป็นการสะท้อนของปรัชญาโดยรวมของภาษา: การใช้งานที่ปลอดภัย ง่ายต่อการบำรุงรักษา และเข้าใจได้ แพ็คเกจ Http
นั้นรวบรัดการร้องขอในลักษณะที่จัดการกับสถาปัตยกรรมของ Elm
การตรวจสอบสิทธิ์แบบพื้นฐานมีอายุเท่ากับเว็บเอง เป็นส่วนหนึ่งของข้อกำหนด HTTP แรกเริ่ม (RFC 7617) มันง่าย แต่ไม่ปลอดภัยมากเนื่องจากข้อมูลประจำตัวถูกเข้ารหัสเป็น base64 เท่านั้น ไม่ได้เข้ารหัส ดังนั้น จึงจำเป็นต้องใช้ HTTPS เพื่อเข้ารหัสการส่งข้อมูล
ทางเลือกแทนการตรวจสอบสิทธิ์แบบพื้นฐาน ได้แก่ OAuth, โทเค็นเช่น JWT, หรือคีย์ API แต่ละอย่างมาพร้อมกับความซับซ้อนและความปลอดภัยที่เพิ่มขึ้น Elm ก็รองรับวิธีเหล่านี้เช่นกัน แต่บ่อยครั้งที่ต้องการแพ็คเกจเพิ่มเติมหรือตัวเข้ารหัสและตัวถอดรหัสแบบกำหนดเอง
ดูเพิ่มเติม
- เอกสารการใช้งานแพ็คเกจ
Http
อย่างเป็นทางการของ Elm: package.elm-lang.org/packages/elm/http/latest - แหล่งที่มาของแพ็คเกจ
Base64
ของ Elm: package.elm-lang.org/packages/truqu/elm-base64/latest - RFC 7617, โครงสร้างการตรวจสอบสิทธิ์ HTTP ‘Basic’: tools.ietf.org/html/rfc7617