Clojure:
การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน
วิธีการ:
ใน Clojure, คุณจะปกติใช้ไลบรารี clj-http
สำหรับคำขอ HTTP, รวมถึงคำขอด้วยการตรวจสอบสิทธิ์พื้นฐาน มาเริ่มกันด้วยการเพิ่ม dependency ([clj-http "3.12.3"]
ตามการปรับปรุงครั้งล่าสุดของฉัน) ไปยัง project.clj
ของคุณ
ต่อไป, นี่คือวิธีที่คุณจัดผลิตคำขอ GET กับการตรวจสอบสิทธิ์พื้นฐาน:
(require '[clj-http.client :as client])
(let [response (client/get "https://your-api.com/resource"
{:basic-auth ["username" "password"]})]
(println "สถานะ:" (:status response))
(println "ข้อมูล:" (:body response)))
แทนที่ "https://your-api.com/resource"
, "username"
, และ "password"
ด้วยรายละเอียดของคุณ โค้ดนี้ส่งคำขอ GET และพิมพ์สถานะและข้อมูลตอบกลับ
ตัวอย่างผลลัพธ์อาจดูเช่นนี้:
สถานะ: 200
ข้อมูล: {ข้อมูล JSON หรืออื่น ๆ ที่นี่}
ข้อมูลลึก
HTTP การตรวจสอบสิทธิ์พื้นฐานมีรากฐานมาจากโปรโตคอลเว็บในช่วงต้น มันส่งชื่อผู้ใช้และรหัสผ่านในหัวข้อ HTTP ด้วยการเข้ารหัส Base64 แม้ว่าจะง่าย แต่ก็ไม่ใช่วิธีที่ปลอดภัยที่สุดเพราะข้อมูลรับรองสามารถถอดรหัสได้ง่ายหากถูกดักฟัง
ทางเลือก:
- การตรวจสอบสิทธิ์ Digest: ซับซ้อนกว่า, เกี่ยวข้องกับการส่งรหัสผ่านที่ถูกแฮชแทน
- OAuth: ระบบการอนุญาตที่เข้มแข็งกว่าซึ่งไม่ต้องการการส่งชื่อผู้ใช้และรหัสผ่าน
- กุญแจ API: โทเค็นที่เป็นเอกลักษณ์ที่ใช้แทนข้อมูลรับรองการล็อกอินแบบดั้งเดิม
ในเบื้องหลังใน clj-http
, การระบุ :basic-auth
ใน hashmap ตัวเลือกทำให้ไลบรารีเข้ารหัสข้อมูลรับรองของคุณและติดตามพวกมันไปที่หัวข้อ HTTP Authorization
เมื่อเซิร์ฟเวอร์ได้รับคำขอ, มันจะถอดรหัสหัวข้อและตรวจสอบข้อมูลรับรอง
จำไว้ว่าสำหรับการส่งข้อมูลที่ปลอดภัย, ควรใช้ HTTPS เพื่อป้องกันไม่ให้คนอื่นดักฟังข้อมูลรับรองของคุณ
ดูเพิ่มเติม
- ที่เก็บของ clj-http GitHub: https://github.com/dakrone/clj-http
- เอกสารอย่างเป็นทางการของ Clojure: https://clojure.org/
- การตรวจสอบสิทธิ์ HTTP ใน MDN: https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication
- ความเข้าใจ OAuth: https://oauth.net/