在PHP中对来自客户端站点的Https POST请求进行响应

在PHP中对来自客户端站点的Https POST请求进行响应,php,post,ssl,https,openssl,Php,Post,Ssl,Https,Openssl,我有一个中央网站a,它将使用SSL进行安全保护 其他客户端站点可以说是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=para4val

我有一个中央网站a,它将使用SSL进行安全保护

其他客户端站点可以说是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帖子和回复

稍后编辑

我们总是发送请求并得到即将到来的响应。 在这里,我需要为客户机请求提供响应/创建响应。 如何在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的站点发送到正常站点是否正确?

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完全取决于您的应用程序逻辑。在这里,它被连接到一个秘密salt字符串,并用于构建响应SECUREKEY,但您基本上可以做任何您想做的事情。

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完全取决于您的应用程序逻辑。在这里,它连接到一个秘密salt字符串,并用于构建响应SECUREKEY,但是你基本上可以做任何你想做的事。

Google php curl post和Google php curl ssl的结果混合,你就会得到答案。http通信的ssl加密基本上不会影响你处理和响应请求的方式。您能否澄清哪种请求客户端:JS?,服务器:PHP,curl?你打算怎么做?你的问题太模糊了,它并不是真正针对SSL的。我们无法为您编写服务,如果我们不知道它的实际用途,更不用说了。Google php curl发布并混合Google php curl ssl的结果,您就会得到答案。http通信的ssl加密基本上不会影响您处理和响应请求的方式。您能否澄清哪种请求客户端:JS?,服务器:PHP,curl?你打算怎么做?你的问题太模糊了,它并不是真正针对SSL的。我们无法为您编写服务,更不用说我们不知道它的实际用途了。