【发布时间】:2019-10-06 13:32:11
【问题描述】:
我有两个脚本,它们可以在不使用浏览器的情况下在两个域之间交换数据。发件人总是告诉我数据无法正确发送。但是因为我没有收到error1 消息,所以连接本身应该是正确建立的。
奇怪的是,当两个脚本位于同一主域的不同子域时,它已经起作用了。现在我将发件人移动到不同域的子域,现在得到错误。两个域都在同一台服务器上,具有相同的 ip,当然都具有 ssl 证书。
这是发送脚本:
$fp = fsockopen("ssl://check.target.com", 443, $errno, $errstr, 30);
if (!$fp){
die('error1');
}else{
$path = '/api/vk_register.php';
$host = 'https://check.target.com';
$referer = $_SERVER['SERVER_NAME'];
fputs($fp, "POST /$path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data_to_send);
while (!feof($fp))
$return[] = fgets($fp);
fclose($fp);
// handling of $return
}
这是接收者:
$token = $_POST['token'];
$firstname = urldecode($_POST['firstname']);
$name = urldecode($_POST['name']);
$vkkdnr = $_POST['vkkdnr'];
$checksum = $_POST['checksum'];
$sender = $_SERVER["HTTP_REFERER"];
// handling the transferred data //
$fp = fsockopen($sender, 443, $errno, $errstr, 30);
if (!$fp){
echo "$errstr ($errno)<br />\n";
}else{
$path = '/ptreg_send.php';
$host = $sender;
$referer = $_SERVER['SERVER_NAME'];
fputs($fp, "POST /$path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data_to_send);
while (!feof($fp)){
$return2[] = fgets($fp,128)."#";
}
fclose($fp);
}
打印 $return2 会带来:
Array
(
[0] => HTTP/1.1 400 Bad Request
[1] => Date: Fri, 17 May 2019 15:03:33 GMT
[2] => Server: Apache
[3] => Content-Length: 347
[4] => Connection: close
[5] => Content-Type: text/html; charset=iso-8859-1
[6] =>
[7] => <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
[8] => <html><head>
[9] => <title>400 Bad Request</title>
[10] => </head><body>
[11] => <h1>Bad Request</h1>
[12] => <p>Your browser sent a request that this server could not understand.<br />
[13] => </p>
[14] => <p>Additionally, a 400 Bad Request
[15] => error was encountered while trying to use an ErrorDocument to handle the request.</p>
[16] => </body></html>
)
【问题讨论】:
-
如果您想通了,请将其作为答案发布;)
标签: php data-transfer