【问题标题】:Unusual HTTP headers in the Plesk APIPlesk API 中的异常 HTTP 标头
【发布时间】:2012-06-27 14:04:04
【问题描述】:

documentation for the Plesk API* 提供以下 cURL 函数。

function curlInit($host, $login, $password)

{

  $curl = curl_init();

  curl_setopt($curl, CURLOPT_URL, "https://{$host}:8443/enterprise/control/agent.php");

  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

  curl_setopt($curl, CURLOPT_POST,           true);

  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

  curl_setopt($curl, CURLOPT_HTTPHEADER,

         array("HTTP_AUTH_LOGIN: {$login}",

                "HTTP_AUTH_PASSWD: {$password}",

                "HTTP_PRETTY_PRINT: TRUE",

                "Content-Type: text/xml")

  );



  return $curl;
}

我有几个问题。

  1. 我从未在其他任何地方看到带有下划线的 HTTP 标头。这是文档中的错误吗?

  2. HTTP_PRETTY_PRINT 到底是什么?搜索这个只会让我回到 Plesk 文档。我在其他任何地方都看不到。

  3. 使用HTTP_AUTH_LOGINHTTP_AUTH_PASSWD 代替CURLOPT_USERPWD 有什么问题?

顺便说一句,无论我尝试什么选项,我都会从 Plesk 收到以下回复。

HTTP/1.1 404 Not Found
X-UA-Compatible: IE=EmulateIE7
Content-Type: text/html
Content-Length: 345
Date: Wed, 27 Jun 2012 14:58:15 GMT
Server: sw-cp-server
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
  <title>404 - Not Found</title>
 </head>
 <body>
  <h1>404 - Not Found</h1>
 </body>
</html>

* Parallels Plesk Panel 9.5:: API RPC 协议开发人员指南 > 客户端代码示例 > PHP 客户端应用程序

【问题讨论】:

    标签: php http curl plesk


    【解决方案1】:

    第 4 点:

    404 表示文件.../enterprise/control/agent.php 已从服务器中删除。许多人在几个月前这样做是为了在补丁发布之前防止安全漏洞。我建议检查/usr/local/psa/admin/logs/httpsd_access_log 文件是否有错误以及/usr/local/psa/admin/htdocs/enterprise/control/agent.php 的可用性

    【讨论】:

      【解决方案2】:
      1. Plesk 使用自己的标题。在自定义 HTTP 请求中,您可以添加任何有效的标头。例如,有些网络服务器会添加自己的标头,例如“由:xxxx 提供支持”,所以没关系。
      2. 漂亮的 XML 输出需要漂亮的打印头。
      3. HTTP_AUTH_LOGIN 标头包含面板用户登录名。 HTTP_AUTH_PASSWD 标头包含面板用户密码。 CURLOPT_USERPWD 不是必需的。
      4. 尝试使用这些选项:

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
        curl_setopt($ch, CURLOPT_POSTFIELDS, $packet);
        curl_setopt($ch, CURLOPT_TIMEOUT, 1200); //wait 20min
        $response = curl_exec($ch);
        

      【讨论】:

      • +1 这个答案有更多信息,如果我要继续的话会很有用,但接受的答案是我的实际问题。现在我的经理已经决定无论如何我们都不会费心去做这件事,所以没关系。
      猜你喜欢
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 2012-01-15
      • 1970-01-01
      相关资源
      最近更新 更多