代理设置的工作方式与常规HTTP请求类似,但在这种情况下,显然是通过代理路由的。就WordPress而言,API的传输层都支持代理连接(fsockopen、fopen、cURL等)。
代理配置有几种不同的风格,每种设置都不同,因此很难回答这个问题,代理是否位于本地主机或远程主机上并不重要wp-config.php
不管怎样,设置都会起作用。如果您位于具有特定要求的intranet/防火墙上,通常需要使用这些设置。
值得注意的是,您只需将本地主机/Web服务器设置为默认情况下对HTTP请求使用代理/链接,在这种情况下,无需使用wp-config.php
因为这是在服务器级别配置的。如果禁用代理,通常会看到响应代码error 130 ERR_PROXY_CONNECTION_FAILED
, 但这些设置超出了WordPress的范围。
可以帮助您设置和调试代理连接的一些工具:
小提琴手(仅限Windows)。http://www.fiddler2.com/fiddler2/查尔斯http://www.charlesproxy.com/鱿鱼http://www.squid-cache.org/要深入了解WordPress HTTP API,我建议使用以下代码段http_api_debug
操作(更改为var_dump
通过viper007bond的网站找到):
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 ) );
}
请求-响应是一个有趣的部分,有时您可以通过快速浏览来判断您的请求是否通过代理。。
例如,使用默认HTTP API发出以下请求。
$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);
现在,同样的请求,但使用通过wp config启用的远程代理。php
//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\' );
正如您所看到的,代理的输出是不同的,最重要的是代理添加了via
标记,在本例中是squid代理。代理应该执行此操作,并且not 更改服务器响应标头,但并非所有人都遵守规则,因此请小心;)。
常量define( \'WP_PROXY_BYPASS_HOSTS\', \'localhost, www.example.com\' )
对于允许访问您可能不想通过代理的主机(例如WordPress更新)非常有用。中的注释class-http.php
具有误导性,因为默认情况下localhost
和get_option(\'siteurl);
已包含,但可以通过pre_http_send_through_proxy
滤器
使用代理设置的其他一些选项包括:
WP_HTTP_BLOCK_EXTERNAL
WP_ACCESSIBLE_HOSTS