대답보다 적지 만 그것에 대한 나의 경험에서 나온 것의 목록 일뿐입니다. 어쩌면 당신은 무언가를 간과했을 것입니다.
요청 및 결과 디버깅
업데이트 프로세스를 깊이 파고 들지 않으면 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 );
인수 중 하나는 ssl_verify
기본적으로 true입니다 (그러나 GitHub에서 업데이트 할 때 큰 문제가 발생합니다). 편집 : 테스트 요청을 디버깅 한 후 SSL이 설정되어 있는지 확인하도록 설정된 다른 인수를 찾았습니다 true
. sslverify
밑줄을 구분하지 않고 호출 합니다. 게임이 실제로 사용 중이거나 포기되고 그 가치에 영향을 줄 수있는 기회가 있는지 게임이 어디로 왔는지 전혀 알 수 없습니다. 'http_api_debug'
필터를 사용하여 찾았습니다 .
완전 맞춤형
또한 전체 내부를 "간단하게"재정의하고 사용자 지정 설정을 수행 할 수도 있습니다. 이를위한 필터가 있습니다.
apply_filters( 'pre_http_request', false, $r, $url );
첫 번째 인수는 true로 설정해야합니다. 내부의 인수 $r
및의 결과와 상호 작용할 수있는 것보다 parse_url( $url );
.
대리
작동하는 또 다른 것은 사용자 정의 프록시를 통해 모든 것을 실행할 수 있습니다. 에 일부 설정이 필요합니다 wp-config.php
. 나는 이것을 전에 시도한 적이 없지만 상수를 잠시 동안 실행하고 언젠가 필요할 경우 작동 해야 하고 주석을 포함 해야하는 몇 가지 예를 요약했습니다 . 당신은 정의해야 WP_PROXY_HOST
하고 WP_PROXY_PORT
A 최소로. 환경. 그렇지 않으면 아무것도 작동하지 않으며 단순히 프록시를 우회합니다.
# 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에 연결하면 세 번째 인수가 요청에 사용 된 클래스를 알려줍니다.
WP_HTTP_curl
클래스 안에는 request()
메소드가 있습니다. 이 방법은 SSL 동작을 가로 채기위한 두 가지 필터를 제공합니다. 하나는 로컬 요청 용 'https_local_ssl_verify'
이고 다른 하나는 원격 요청 용 '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
프록시 처리에 사용됩니다.