Rust:
שליחת בקשת HTTP עם אימות בסיסי
איך לעשות:
ראשית, התקנת חבילת ה-reqwest
לניהול בקשות HTTP. ב-Cargo.toml שלך:
[dependencies]
reqwest = "0.11"
base64 = "0.13"
אז, קטע קוד לשליחת בקשה עם אימות בסיסי:
use reqwest;
use base64::{encode};
#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
let username = "user";
let password = "pass";
let auth = encode(format!("{}:{}", username, password));
let client = reqwest::Client::new();
let res = client.get("http://example.com/secret-page")
.header("Authorization", format!("Basic {}", auth))
.send()
.await?;
println!("Status: {}", res.status());
println!("Headers:\n{:?}", res.headers());
Ok(())
}
פלט לדוגמא:
Status: 200 OK
Headers:
{
"content-type": "text/html",
"content-length": "1549",
...
}
הבעיה מקרוב:
אימות בסיסי ב-HTTP הוא יחסית עתיק, דרך פשוטה לסנן גישה למשאבים ברשת. השימוש בו הוא נפוץ במקרים שאין דרישה לרמת אבטחה גבוהה מאוד, כי הוא שולח את השם והסיסמא בתיקוש מאוד פשוט (base64) ולא כבטוח כמו הצפנת TLS/SSL. ישנן אלטרנטיבות כמו אימות מורכב יותר, טוקנים ומערכות OAuth, אבל לאימות בטוח יותר.