経緯
macOSでXcodeを使用しiOSのアプリを製作しています
APIの動作確認をしたく、Charlesにて通信を確認していたところ、
通信中に動作が重くなり、Charlesが接続中のまま動かなくなってしまった為、
処理中のままアプリを終了させてしまいました。
それ以降、Charlesを起動している間でないとネットワークに接続できなくなってしまいました
試したこと
- pcの再起動
- 証明書の再発行
- Charlesアプリの削除(消してしまったらネットに繋がらなかった為、ゴミ箱から復活させました)
-
macのProxyのチェックを外す
システム環境設定 > ネットワーク > 詳細 > プロキシ から、「構成するプロトコルを選択」のチェックを全て外しました。
一度上記の項目を試したのですが、改善されませんでした。
記事を書くためにもう一度自分の行った作業を確認したところ、
macのProxyのチェックを外すを行っても、Charlesを開くと自動的にチェックがついてしまっていることに気づき、
一度Charlesを完全に閉じてからチェックを外してネットに接続してみたところ無事繋がりました!
その後Charlesを起動してからProxyの「構成するプロトコルを選択」をみてみるとやはり自動的にチェックが入ってしまいましたが、Charlesを閉じてみても問題なくネットワークに繋がるようになりました
私の知識が浅浅のため、これは状況を踏まえた憶測に過ぎないのですが・・・
どうやら、
- Charlesを開いているときのプロキシ設定
- Charlesを閉じた時のプロキシ設定
この2つは別物のようです
Charlesを開いている時のプロキシ設定は、Charlesを開いた際に自動的に適用され、Charlesを開いている間は維持されるものなので、
手動でチェックを外してみても、再度起動してしまえば元に戻ってしまう。
一方、Charlesを閉じた時のプロキシ設定は、自由に設定でき、Charlesを開いていない間のみ適用されるもの。
なのだと思います。
Charlesを開いているときのプロキシ設定 => プロキシ設定A
Charlesを閉じた時のプロキシ設定 => プロキシ設定B
と置いた時、
(標準時)プロキシ設定B → (Charles起動中) プロキシ設定A → (Charles終了後)プロキシ設定B
のように適用され、
Bの方は変更が維持されますが。
(標準時)プロキシ設定Bを変更してB'となる → (Charles起動中)プロキシ設定A → (Charles終了後)プロキシ設定B’
Aの方はCharlesの設定に適応してしまうので
(標準時)プロキシ設定B → (Charles起動中) プロキシ設定Aを変更してA'となる → (Charles終了後)プロキシ設定B → (Charles起動中) プロキシ設定A
もう一度起動すると変更が適用されていない。
こんな感じで認識しています(厳密には違うかもしれません・・・)
まとめ
仕組みはともかく、私と同じような状況に陥った方は、
Charlesを閉じた状態でProxyのチェックを外す
をやって見て頂いたら解決できるかもしれません
解説はできなくてもこれさえ共有して同じことで悩む方が減らせれば・・・
と思い初めて記事を公開してみました
詳しく解説してくださる方がいらっしゃいましたら是非お願いします