Swift:
שליחת בקשת HTTP עם אימות בסיסי
How to: (איך לעשות:)
קוד ב-Swift ששולח בקשת HTTP עם אימות בסיסי:
import Foundation
let username = "your_username"
let password = "your_password"
let loginData = String(format: "%@:%@", username, password).data(using: String.Encoding.utf8)!
let base64LoginData = loginData.base64EncodedString()
if let url = URL(string: "https://example.com/protected") {
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.setValue("Basic \(base64LoginData)", forHTTPHeaderField: "Authorization")
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print(error?.localizedDescription ?? "No data")
return
}
if let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 {
print("Authenticated and received data:", String(data: data, encoding: .utf8) ?? "")
} else {
print("Authentication failed")
}
}
task.resume()
}
תוצאת דוגמה:
Authenticated and received data: {"message":"Hello, secure world!"}
או:
Authentication failed
Deep Dive (עומק הנושא)
ב-Hypertext Transfer Protocol (HTTP), אימות בסיסי הוא שיטה פשוטה להעברת שם משתמש וסיסמה. ה-MIME base64 קודד את הזוגות שם משתמש-סיסמא. האימות הבסיסי קל ליישם ולכן היה פופולרי, אך גם נחשף לפישינג וגניבת זהות.
החלפות כוללות אימות דיגיטלי, עוגיות מאובטחות, או אימות OAuth.
מימוש יכול לכלול גם מעקב לוג או להיות חלק ממנגנון אבטחה רחב יותר באפליקציה. שקול להשתמש URLSesssionDelegate עבור ניהול מתקדם של תהליך האימות.
See Also (ראה גם)
- HTTP Authentication: Basic and Digest Access Authentication - המפרט של ה-RFC לאימות בסיסי.
- NSURLSession Class - Apple Developer Documentation - המידע הרשמי על השימוש ב-NSURLSession ב-Swift.
- URLSession Authentication with Swift - מדריך לתחילת עבודה עם NSURLSession ואימות ב-Swift.