Lua:
기본 인증을 사용한 HTTP 요청 보내기
How to: (방법)
local http = require("socket.http")
local ltn12 = require("ltn12")
-- 사용자 이름과 비밀번호 설정
local username = "your_username"
local password = "your_password"
-- 기본 인증 헤더 생성
local auth_header = "Basic " .. (username .. ":" .. password):gsub("\n", "")
local response_body = {}
-- HTTP 요청
local res, code, response_headers = http.request{
url = "http://yourserver.com/data",
method = "GET",
headers = {
["Authorization"] = auth_header
},
sink = ltn12.sink.table(response_body)
}
-- 응답 확인
if code == 200 then
print(table.concat(response_body))
else
print("Error: " .. (code or "no response"))
end
예상 출력:
{"data": "some secure data"}
Deep Dive (심층 탐구)
HTTP 기본 인증은 RFC 7617에 정의된 오래된 프로토콜입니다. 요청 데이터가 암호화되지 않으므로 HTTPS와 함께 사용할 때 더 안전합니다. 인증에 더 안전한 OAuth와 같은 대체 수단들이 존재하며, 예를 들면 API 키를 사용한 방식 등이 있습니다. Lua에서는 socket.http
라이브러리를 많이 사용하는데, lua-requests
나 LuaSec
와 함께 사용해 SSL/TLS를 지원하는 HTTPS 요청도 가능합니다.
See Also (참고자료)
- Lua 라이브러리: LuaSocket
- RFC 7617, The ‘Basic’ HTTP Authentication Scheme: RFC 7617
- LuaSec, a binding for OpenSSL to provide TLS/SSL communication: LuaSec GitHub
- ’lua-requests’ for more advanced HTTP requests: lua-requests GitHub