基本認証を使用したHTTPリクエストの送信

Lua:
基本認証を使用したHTTPリクエストの送信

How to (やり方)

-- Luaには標準HTTPライブラリがないので、socket.httpを使います。
local http = require("socket.http")
local ltn12 = require("ltn12")

-- ベーシック認証の準備
local username = "your_username"
local password = "your_password"
local auth = "Basic " .. (mime.b64(username .. ":" .. password))

-- HTTPリクエストの設定
local response_body = {}
local res, code, response_headers = http.request{
  url = "http://example.com/data",
  method = "GET",
  headers = 
  {
    ["Authorization"] = auth
  },
  sink = ltn12.sink.table(response_body)
}

-- 結果のチェック
if code == 200 then
  print("Success:")
  print(table.concat(response_body))
else
  print("Error:", code)
end

-- 出力例 (成功時)
-- Success:
-- {"data": "この中にあなたがリクエストしたデータが含まれます"}

このコードはsocket.httpltn12を使ってHTTP GETリクエストを送ります。ユーザー名とパスワードで認証して、データを取得します。

Deep Dive (深掘り)

HTTPリクエストの基本認証は、ウェブが始まって以来の古い方法です。暗号化されていないので、HTTPS経由で使うのが一般的です。

代替方法としては、OAuthなどがありますが、設定が複雑な場合があります。基本認証の場合、ユーザー名とパスワードをBase64でエンコードしてヘッダに含めます。このシンプルさが、特に内部のシステムやシンプルなAPIとの連携ではまだ利用されています。

詳細実装においてはsocket.httpを使い、lua-secを組み合わせることでHTTPSリクエストも行えます。ltn12.sinkはレスポンスボディを受け取るために利用しています。

See Also (関連情報)