答えではありませんが、私の経験から得たもののリストです。おそらく見落としているかもしれません。
リクエストとその結果のデバッグ
更新プロセスを深く掘り下げることなく、WP HTTP APIはWP_HTTP
クラスを使用します。また、デバッグフックという優れた機能も提供します。
do_action( 'http_api_debug', $response, 'response', $class, $args, $url );
どこに$response
もWP_Error
、おそらくあなたにもっと教えてくれるオブジェクトがあります。
注:簡単なテストから、このフィルターは、(何らかの理由で)実際にリクエストを行っている場所の近くに配置した場合にのみ機能するようです。したがって、以下のフィルターのいずれかのコールバック内から呼び出す必要があるかもしれません。
WP_HTTP
クラス引数
Classes引数自体はフィルター可能ですが、一部のメソッドは内部メソッドによってリセットされ、WPが必要とするものに戻ります。
apply_filters( 'http_request_args', $r, $url );
引数の1つはでssl_verify
、これはデフォルトでtrueです(ただし、GitHubなどから更新する場合、私には大きな問題が発生します)。編集:テストリクエストをデバッグした後、SSLがに設定されているかどうかを確認するために設定されている別の引数を見つけましたtrue
。sslverify
(下線を区切ることなく)呼び出されます。これが実際に使用されているか放棄されているか、そしてその価値に影響を与える可能性があるかどうか、これがゲームのどこに導入されたかはわかりません。'http_api_debug'
フィルターを使って見つけました。
完全にカスタム
内部全体を「単純に」オーバーライドして、カスタムセットアップを使用することもできます。そのためのフィルターがあります。
apply_filters( 'pre_http_request', false, $r, $url );
最初の引数をtrueに設定する必要があります。内部の引数$r
やからの結果を操作できparse_url( $url );
ます。
代理
機能する可能性のあるもう1つのことは、カスタムプロキシを介してすべてを実行することです。これには、いくつかの設定が必要wp-config.php
です。これまで試したことはありませんでしたが、定数をしばらく前に調べて、機能するはずの例をいくつかまとめ、ある日必要になった場合に備えてコメントを含めました。あなたは定義する必要がWP_PROXY_HOST
とWP_PROXY_PORT
分として。設定。他に何も機能せず、単にプロキシをバイパスします。
# HTTP Proxies
# Used for e.g. in Intranets
# Fixes Feeds as well
# Defines the proxy adresse.
define( 'WP_PROXY_HOST', '127.0.84.1' );
# Defines the proxy port.
define( 'WP_PROXY_PORT', '8080' );
# Defines the proxy username.
define( 'WP_PROXY_USERNAME', 'my_user_name' );
# Defines the proxy password.
define( 'WP_PROXY_PASSWORD', 'my_password' );
# Allows you to define some adresses which
# shouldn't be passed through a proxy.
define( 'WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com' );
編集
WP_HTTP
クラスは、通常のように作用するベースクラス(異なるシナリオに拡張されます)。拡張WP_HTTP_*
クラスはFsockopen
、Streams
、Curl
、Proxy
、Cookie
、Encoding
。コールバックを'http_api_debug'
-actionにフックすると、3番目の引数で、要求に使用されたクラスがわかります。
WP_HTTP_curl
クラスの中には、request()
メソッドがあります。このメソッドは、SSL動作をインターセプトする2つのフィルターを提供します。1つはローカルリクエスト用で'https_local_ssl_verify'
、もう1つはリモートリクエスト用'https_ssl_verify'
です。WPは、あなたが見返りlocal
としてlocalhost
何を得るかを定義するでしょうget_option( 'siteurl' );
。
したがって、その要求を行う直前に(または最も近い要求にフックされているコールバックから)、次のことを試してみます。
add_filter( 'https_ssl_verify', '__return_true' );
# Local requests should be checked with something like
# 'localhost' === $_SERVER['HTTP_HOST'] or similar
# add_filter( 'https_local_ssl_verify', '__return_true' );
補足:ほとんどの場合、WP_HTTP_curl
プロキシの処理に使用されます。