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

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

วิธีการ:

นี่คือตัวอย่างพื้นฐานที่ใช้ไลบรารี CURL ใน C++ ก่อนที่จะเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง libcurl แล้ว

#include <iostream>
#include <curl/curl.h>

// ฟังก์ชันย้อนกลับง่ายๆ เพื่อจัดการข้อมูลที่ได้รับจาก curl
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) {
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main() {
    CURL *curl;
    CURLcode res;
    std::string readBuffer;

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://yourapi.com/data");
        curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
        curl_easy_setopt(curl, CURLOPT_PASSWORD, "pass");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
        
        // ดำเนินการคำขอ และตรวจสอบข้อผิดพลาด
        res = curl_easy_perform(curl);
        if(res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
        } else {
            std::cout << readBuffer << std::endl;
        }
        
        // การทำความสะอาด
        curl_easy_cleanup(curl);
    }
    return 0;
}

คุณจะเห็นการตอบกลับจากเซิร์ฟเวอร์ถูกพิมพ์ออกที่คอนโซล โดยสมมติว่าไม่มีข้อผิดพลาดใดๆ เกิดขึ้น

พิจารณาลึกซึ้ง

การรับรองความถูกต้องแบบพื้นฐานเป็นวิธีที่เก่าแก่ ย้อนกลับไปในช่วงต้นๆ ของ HTTP ปัจจุบัน ความชอบของอุตสาหกรรมมีแนวโน้มเอนไปทางวิธีการที่ปลอดภัยกว่า เช่น OAuth และโทเค็น แม้ว่าการรับรองความถูกต้องแบบพื้นฐานจะยังคงใช้งานอยู่ บ่อยครั้งสำหรับระบบภายในหรือระบบง่ายๆ ที่ชั้นความปลอดภัยที่หนักหน่วงเป็นเรื่องที่เกินไป

ภายใน ชื่อผู้ใช้และรหัสผ่านของคุณจะถูกเข้ารหัสแบบ base64 และซ่อนอยู่ในส่วนหัว HTTP มันเป็นวิธีง่ายๆ แต่ไม่ปลอดภัยหากไม่ผ่าน HTTPS เพราะ base64 สามารถถอดรหัสได้ง่าย—ทำให้ HTTPS เป็นสิ่งจำเป็น

หาก libcurl ไม่ตรงกับความชอบของคุณ พิจารณาทางเลือกอื่นเช่นไลบรารี cpp-httplib หรือคุณสามารถใช้ Boost.Beast เพื่อการเข้ามือทำมากขึ้น

ดูเพิ่มเติม