cURL выводит ошибку 301 и 302

Ошибка заключается в том, что при запросе на какой либо сайт cURL вместо сайта выводит 301 moved permanently либо 302 moved. Код:

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <sstream>
#include <string>

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

auto onDataReceived(char* ptr, std::size_t size, std::size_t nmemb, void* userdata)->std::size_t;

constexpr auto k_max_buffer_size = 4096;

auto main() -> int
{
    std::string data;

    bool request_complete = true;

    if (auto curl = curl_easy_init())
    {
        curl_easy_setopt(curl, CURLOPT_URL, "vk.com");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, onDataReceived);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data);

        if (curl_easy_perform(curl) != CURLE_OK)
        {
            request_complete = false;
            std::cerr << "Error : " << curl_easy_perform(curl) << std::endl;
        }

        curl_easy_cleanup(curl);
    }

    if (request_complete)
    {
        std::istringstream stream{ data };
        std::cout << data;
    }
}

auto onDataReceived(char* ptr, std::size_t size, std::size_t nmemb, void* data) -> std::size_t
{
    if (auto str = reinterpret_cast<std::string*>(data))
    {
        str->append(ptr, nmemb * size);
    }
    return nmemb * size;
}

Ответы (1 шт):

Автор решения: KoVadim

301 - это не ошибка. Это просто сервер с той стороны подсказывает, что запрашиваемый ресурс находится на самом деле по другому адресу. В Вашем случае скорее всего Вы обращаетесь по http, а сервер предлагает перейти на https. Можно это сделать явно:

curl_easy_setopt(curl, CURLOPT_URL, "https://vk.com");

а можно попросить курл самостоятельно разобраться с этим такой строкой

curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
→ Ссылка