Quantcast
Channel: いろいろ備忘録日記
Viewing all articles
Browse latest Browse all 1458

Flutterメモ-14 (httpsリクエスト時のCERTIFICATE_VERIFY_FAILEDをバイパスさせる)(開発時)

$
0
0

概要

忘れちゃいそうなのでここにメモメモ。

HTTPSアクセスが必要な処理があって、開発時なのでサーバ側にオレオレ証明書を置いて動かしているとします。

その状態で https アクセスをすると

final response = await http.post(
          Uri.https(
            'dokokano.server.dev',
            '/path/to/api',
          ),
          body: json.encode(request),
          headers: {'Content-Type':'application/json'},
        );

CERTIFICATE_VERIFY_FAILEDというエラーが返ってきます。自己証明書だからですね。

とかいって、正規の証明書を仕込むのはちょっと面倒なので、開発時はこのCERTチェックをバイパスしてほしい。

そういう場合は、以下のようにするといいかもしれません。

まず、HttpOverridesを継承したクラスを用意します。こんな感じ。

class PermitInvalidCertification extends HttpOverrides {
  @override
  HttpClient createHttpClient(SecurityContext? context) {
    returnsuper.createHttpClient(context)..badCertificateCallback = (cert, host, port) =>true;
  }
}

このクラスのインスタンスをリクエスト出す前に HttpOverrides.globalに設定します。

        HttpOverrides.global = PermitInvalidCertification();

        final response = await http.post(
          Uri.https(
            'dokokano.server.dev',
            '/path/to/api',
          ),
          body: json.encode(request),
          headers: {'Content-Type':'application/json'},
        );

これでエラーが出ずにリクエストが飛ばせます。後は開発時のみ有効になるように調整してやればいいですね。

参考情報

stackoverflow.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com


Viewing all articles
Browse latest Browse all 1458

Trending Articles