Files
cpp-httplib/docs-src/pages/ja/cookbook/c04-follow-location.md
2026-04-11 20:40:08 -04:00

1.7 KiB
Raw Blame History

title, order, status
title order status
C04. リダイレクトを追従する 4 draft

cpp-httplibはデフォルトではリダイレクトHTTP 3xxを追従しません。サーバーから302 Foundが返ってきても、そのままステータスコード302のレスポンスとして受け取ります。

自動で追従してほしいときは、set_follow_location(true)を呼びましょう。

リダイレクトを追従する

httplib::Client cli("http://example.com");
cli.set_follow_location(true);

auto res = cli.Get("/old-path");
if (res && res->status == 200) {
  std::cout << res->body << std::endl;
}

set_follow_location(true)を設定すると、Locationヘッダーを見て新しいURLに自動でリクエストを投げ直します。最終的なレスポンスがresに入ります。

HTTPからHTTPSへのリダイレクト

httplib::Client cli("http://example.com");
cli.set_follow_location(true);

auto res = cli.Get("/");

多くのサイトはHTTPアクセスをHTTPSへリダイレクトします。set_follow_location(true)を有効にしておけば、こうしたケースも透過的に扱えます。スキームやホストが変わっても自動で追従します。

Warning: HTTPSへのリダイレクトを追従するには、cpp-httplibをOpenSSLまたは他のTLSバックエンド付きでビルドしておく必要があります。TLSサポートがないと、HTTPSへのリダイレクトは失敗します。

Note: リダイレクトを追従すると、リクエストの実行時間は伸びます。タイムアウトの設定はC12. タイムアウトを設定するを参照してください。