1

我有一个使用 SSL 保护的中央网站 (A)。

其他客户端站点(比如说 B、C、D、E .....)将连接到该站点 A。

要求是从站点 B(或 C、D、E .....)向站点 A 发送 HTTPS POST 请求。

请求的参数为

WEBSITEKEY=keyvalue;

那么站点 A 必须对此请求作出响应。

响应应该有一个必不可少的参数,因为,

SECUREKEY=key-value-secure;
Para1=para1value;
Para2=para2value;
Para3=para3value;
Para4=para4value;

如何在 PHP 中实现这个响应部分?我是 SSL POST 和响应的新手。

稍后编辑,

我们总是发送请求并得到即将到来的响应。在这里,我需要为客户端请求提供响应/创建响应。我怎样才能在 PHP 中做到这一点?我发现以下代码..

<?php
//process the request by fetching the info
$headers = http_get_request_headers();
$result = http_get_request_body();
//do stuff with the $headers and $result variables....
//then send your response
HttpResponse::status(200);
HttpResponse::setContentType('text/xml');
HttpResponse::setHeader('From', 'Lymber');
HttpResponse::setData('<?xml version="1.0"?><note>Thank you for posting your data! We    love php!</note>');
HttpResponse::send();
?>    

将响应从我的 SSL 启用站点发送到正常站点是否正确?

4

1 回答 1

4

SSL 部分无关紧要;它将由 Web 服务器处理,PHP 将照常接收请求。

您唯一需要做的就是构建您的请求,为此,您需要知道此请求将采用的格式。此外,您是否需要一些特殊的 MIME 类型或其他什么。

例如,假设答案必须是 JSON。然后它需要是这样的:

<?php
    if (!isset($_POST['WEBSITEKEY'])) {
         // Handle error. E.g.
         Header("HTTP/1.1 400 Bad Request");
         die();
    }

    $websitekey = $_POST['WEBSITEKEY'];

    require 'yourcode.php';

    $response = array(
        'SECUREKEY' => md5($secret . $websitekey),
        'para1'     => date('Y-m-d H:i:s'),
        'para2'     => 'Hello world',
    );
    // Specifying charset isn't strictly necessary but may be useful.
    Header("Content-Type: application/json;charset=UTF-8");
    $data = json_encode($response);
    $len  = strlen($data);
    // Some browser/proxy/load balancer may get better performance if the
    // length is known beforehand. This also disables Chunked-Encoding, which
    // in some scenarios may give problems.
    Header("Content-Length: {$len}");
    die($data); // Ensure no more output after this..

如何处理$websitekey完全取决于您的应用程序逻辑。在这里,它被连接到一个秘密的盐字符串并用于构建响应SECUREKEY,但您基本上可以做任何您想做的事情。

于 2012-10-11T17:55:18.287 回答