【问题标题】:Error connecting through proxy in wordpress plugin via fsockopen通过 fsockopen 在 wordpress 插件中通过代理连接时出错
【发布时间】:2011-08-22 00:50:08
【问题描述】:

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

我已修改 fsockopen 以指向我的代理,它现在确实收到了来自代理的响应,尽管代理日志中出现了“TCP_DENIED/400 4139 POST 错误:无效请求 - 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>

如果您需要更多信息,请告诉我。

干杯

【问题讨论】:

    标签: php wordpress proxy fsockopen


    【解决方案1】:

    诀窍似乎是在 POST 请求上添加http://your.domain.name/(即不仅是 POST/name-of-file,因为 class-IXR.php 默认具有),至少根据以下链接:@987654322 @

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

    【讨论】:

      【解决方案2】:

      在 WP 中有一些与代理相关的常量,以及在 wp-includes/class-http.php 中使用的一大堆其他常量。您是否尝试过设置其中的任何一个或全部?例如:

      WP_PROXY_HOST
      WP_PROXY_PORT
      WP_PROXY_USERNAME
      WP_PROXY_PASSWORD
      WP_PROXY_BYPASS_HOSTS
      

      【讨论】:

      • IXR_Client 不使用任何代理常量,fsocksopen 使用与主机相同的地址,正如我在第一段中所说的。
      • 您可能错过了 WP 使用位于(wp-includes/)class-wp-xmlrpc-server.php 和 class-wp-http-ixr-client.php 中的两个扩展类?它们都使用上述文件中引用的 http 对象,因此也使用了所有与 http 相关的常量。
      • 要通过 fsocksopen 连接到代理,您必须在调用 @fsockopen 时使用代理地址。在 WP 代码中,它对 host 和 @fsockopen 使用相同的地址,因此不会使用常量。根据文档,这是将@fsockopen 连接到代理的唯一方法,因此不能使用全局。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 2014-08-16
      • 2012-09-29
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多