通过fsockopen连接wordpress插件中的代理时出错

时间:2011-05-09 22:09:55

标签: php wordpress proxy fsockopen

我正在使用wordpress的stats插件,它在class-IXR中使用核心wordpress类IXR_Client。虽然根据文档,它使用了wp-config.php中的代理配置,但我认为它没办法,因为它使用与fsockopen相同的主机地址(查看fsockopen它应该是代理地址)

我已经修改了fsockopen以指向我的代理,它确实从代理收到响应,尽管'TCP_DENIED / 400 4139 POST错误:invalid-request - NONE / - text / html'出现在代理日志中并且代理返回错误。我有一种感觉,我没有把代理请求包装好。

请求:(有些事情发生了变化)

POST /xmlrpc.php HTTP/1.0 Host: wordpress.com Content-Type: 
text/xml User-Agent: The Incutio XML-RPC PHP Library Content-Length: 1770 <?xml 
version="1.0"?> <methodCall> <methodName>wpStats.check_key</methodName> <params> 
<param><value><string>123456789012</string></value></param> <param><value><struct> 
<member><name>host</name><value><string>thedomainoftheblog.com</string></value></member> 
<member><name>path</name><value><string>/</string></value></member> 
<member><name>admin_bar</name><value><string>1</string></value></member> 
<member><name>wp_me</name><value><string>1</string></value></member> 
<member><name>reg_users</name><value><string></string></value></member> 
<member><name>footer</name><value><string>1</string></value></member> 
<member><name>version</name><value><string>7</string></value></member> 
<member><name>error</name><value><string></string></value></member> 
<member><name>blogname</name><value><string>THE | BLOG NAMEFUL</string></value></member> 
<member><name>blogdescription</name><value><string>blogs name norma 
l</string></value></member><member><name>siteurl</name>
<value><string>http://thedomainoftheblog.com</string></value></member> 
<member><name>gmt_offset</name><value><string>0</string></value></member> 
<member><name>timezone_string</name><value><string></string></value></member> 
<member><name>stats_version</name><value><string>7</string></value></member> 
<member><name>stats_api</name><value><string>jetpack</string></value></member> 
<member><name>page_on_front</name><value><string>0</string></value></member>
<member><name>permalink_structure</name><value>
<string>/%year%/%monthnum%/%day%/%postname%/</string></value></member> 
<member><name>category_base</name><value><string></string></value></member> 
<member><name>tag_base</name><value><string></string></value></member> </struct></value></param> </params></methodCall>

如果您需要更多信息,请与我们联系。

干杯

2 个答案:

答案 0 :(得分:1)

诀窍似乎是在POST请求中添加http://your.domain.name/(即不仅是POST /文件名,默认情况下为class-IXR.php),至少根据以下链接: http://thedeadone.net/how-to/livejournal-and-wordpress/

我已经尝试过了,它确实有用。

答案 1 :(得分:0)

WP中有一些与代理相关的常量,以及wp-includes / class-http.php中使用的一大堆其他常量。你试过设置它们中的任何一个或全部吗? e.g:

WP_PROXY_HOST
WP_PROXY_PORT
WP_PROXY_USERNAME
WP_PROXY_PASSWORD
WP_PROXY_BYPASS_HOSTS