การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน

Lua:
การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน

วิธีการ:

Lua ไม่มีการสนับสนุน HTTP ในตัว ดังนั้นคุณจะต้องใช้ไลบรารีภายนอก เช่น socket.http จาก LuaSocket หรือ http.request จากไลบรารี http หากคุณใช้ Lua 5.3+ สำหรับการตรวจสอบสิทธิ์พื้นฐาน ให้เข้ารหัสข้อมูลรับรองและเพิ่มพวกเขาในส่วนหัวของคำขอ

local http = require("socket.http")
local ltn12 = require("ltn12")
local mime = require("mime")

-- ข้อมูลรับรองของคุณ
local username = "Aladdin"
local password = "openSesame"
local credentials = mime.b64(username .. ":" .. password)

-- การตั้งค่าคำขอ
local response_body = {}
local res, code, response_headers = http.request{
    url = "http://example.com/data",
    method = "GET",
    headers = {
        ["Authorization"] = "Basic " .. credentials
    },
    sink = ltn12.sink.table(response_body)
}

-- ผลลัพธ์ที่ได้
if code == 200 then
    print(table.concat(response_body))
else
    print("Error: " .. (res or code))
end

ขุดลึก

HTTP Basic Authentication เป็นวิธีสำหรับ HTTP user agent ในการให้ชื่อผู้ใช้และรหัสผ่านเมื่อทำคำขอ ถูกประดิษฐ์ขึ้นในช่วงต้นของประวัติศาสตร์เว็บ เป็นที่รองรับอย่างแพร่หลาย แต่ไม่ปลอดภัยมาก; ข้อมูลรับรองเพียงถูกเข้ารหัสแบบ base64 ไม่ถูกเข้ารหัส

ทางเลือก ได้แก่ Digest Authentication, OAuth และ API keys – ทั้งหมดนี้ให้ความปลอดภัยที่แข็งแกร่งกว่า Basic auth จะใช้สำหรับการเขียนสคริปต์การทดสอบอย่างรวดเร็ว เครื่องมือภายใน หรือในกรณีที่การขนส่งมีการรักษาความปลอดภัยผ่าน HTTPS

ในการดำเนินการตรวจสอบสิทธิ์พื้นฐานใน Lua โดยทั่วไปคุณจะสร้างสตริงที่รวมชื่อผู้ใช้และรหัสผ่านที่คั่นด้วยจุดคั่นย่อหน้า (:), จากนั้นเข้ารหัสสตริงนั้นด้วย base64 สตริงที่เข้ารหัสนี้จะถูกส่งในส่วน Authorization ของส่วนหัวคำขอ HTTP ของคุณ

ธรรมชาติที่ยืดหยุ่นของ Lua หมายความว่าคุณมีตัวเลือกในการใช้ไลบรารีเพื่อจัดการกับ HTTP และการเข้ารหัส base64 LuaSocket ได้รับการทาบทามสำหรับการดำเนินงานเครือข่ายมาอย่างยาวนาน แม้ว่าเวอร์ชันใหม่ของ Lua จะแนะนำทางเลือกอื่นเช่นไลบรารี http หรือการผูกพันกับ CURL สำหรับงานที่ซับซ้อนกว่า

ดูเพิ่มเติม