Die Proxy-Einstellungen funktionieren wie normale HTTP-Anforderungen, werden jedoch in diesem Fall offensichtlich über einen Proxy geleitet. In Bezug auf WordPress unterstützen alle Transportschichten der API Proxy-Verbindungen (fsockopen, fopen, cURL,).
Die Proxy-Konfigurationen sind in verschiedenen Varianten erhältlich und jedes Setup ist anders, sodass die Beantwortung dieses Problems schwierig ist. Es spielt keine Rolle, ob sich Ihr Proxy auf Ihrem lokalen Host oder Ihrer Remote befindet. Die wp-config.php
Einstellungen funktionieren unabhängig davon. In der Regel möchten Sie diese Einstellungen verwenden, wenn Sie sich in einem Intranet / einer Firewall befinden, für die bestimmte Anforderungen gelten.
Es ist erwähnenswert, einfach einstellen kann Ihre localhost / Webserver für HTTP - Anfragen über einen Proxy / Verkettungs die standardmäßig verwendet und in diesem Fall ist es nicht notwendig , alle Optionen mit einzustellen , wp-config.php
da dies auf der Serverebene konfiguriert ist. Wenn Sie Ihren Proxy deaktivieren, wird normalerweise ein Antwortcode error 130 ERR_PROXY_CONNECTION_FAILED
von angezeigt. Diese Einstellungen liegen jedoch außerhalb des Bereichs von WordPress.
Einige Tools, mit denen Sie Proxy-Verbindungen einrichten und debuggen können:
Um in die WordPress-HTTP-API einzusteigen, empfehle ich das folgende Snippet mit der http_api_debug
Aktion (geändert, var_dump
um über die Website von viper007bond gefunden zu werden):
add_action( 'http_api_debug', 'viper_http_api_debug', 10, 5 );
function viper_http_api_debug( $response, $type, $class, $args, $url ) {
// You can change this from error_log() to var_dump() but it can break AJAX requests
var_dump( 'Request URL: ' . var_export( $url, true ) );
var_dump( 'Request Args: ' . var_export( $args, true ) );
var_dump( 'Request Response : ' . var_export( $response, true ) );
}
Die Anforderungsantwort ist der interessante Teil. Manchmal können Sie mit einem kurzen Blick erkennen, ob Ihre Anfrage über einen Proxy erfolgt.
Verwenden Sie beispielsweise die Standard-HTTP-API, um die folgende Anforderung zu stellen.
$api_url = 'http://api.wordpress.org/secret-key/1.0/';
$response = wp_remote_get($api_url);
$header = wp_remote_retrieve_headers( $response );
var_dump($header);
Jetzt die gleiche genaue Anfrage, aber mit einem Remote-Proxy, der über wp-config.php aktiviert wurde
//I grabbed these off of Google search they will not work for long.
define( 'WP_PROXY_HOST', '210.22.115.162' );
define( 'WP_PROXY_PORT', '3128' );
Wie Sie am Proxy sehen können, ist die Ausgabe anders. Am wichtigsten ist, dass der Proxy das via
Tag hinzufügt , in diesem Fall einen Squid-Proxy. Proxies sollen dies tun und den Server- Antwortheader nicht ändern, aber nicht jeder befolgt die Regeln, also sei vorsichtig;).
Die Konstante define( 'WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com' )
ist nützlich, um den Zugriff auf Hosts zu ermöglichen, die Sie möglicherweise nicht über einen Proxy verwenden möchten (z. B. WordPress-Updates). Die Kommentare in der class-http.php
sind irreführend , da standardmäßig localhost
und get_option('siteurl);
bereits enthalten sind , aber über die verändert werden pre_http_send_through_proxy
Filter.
Einige zusätzliche Optionen, die mit den Proxy-Einstellungen funktionieren, sind:
WP_HTTP_BLOCK_EXTERNAL
WP_ACCESSIBLE_HOSTS