HTTP error 400
eddi
- https
Hallo,
nachdem ich endlich das PostToHost zu meiner Testseite am Laufen habe, wollte ich nun einen Request an die echte Seite senden und kriege da prompt einen error 400.
Hier nochmal der maßgebliche php-code:
function PostToHost($host, $path, $referer, $data_to_send) {
$fp = fsockopen($host, 443, $errno, $errstr, 30);
if(!$fp){
printf $errstr;
} else {
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)) {
$res .= fgets($fp, 1000);
}
fclose($fp);
return $res;
}
}
$host = "ssl://derfremdeserver.de";
$path = "/x520";
$referer = "www.ich.de";
$data = "a=irgendwas&b=nochwas&c=auchnochwas$d=usw";
$x = PostToHost($host, $path, $referer, $data)
Wie gesagt, bei meiner Testseite läuft das.
Ich hab das auch mit anderen Seiten probiert, nie ein error 400.
Der Unterschied sind lediglich, das SSL und der Port.
Was meckert der andere Server da rum?
Will der noch was besonderes wegen dem SSL?
Danke schonmal :)
Hallo, eddi!
Fehler 400 heißt "Bad Request" und tritt dann auf, wenn der Server den Request nicht verarbeiten kann, weil dessen Struktur fehlerhaft ist.
Das kann in diesem Beispiel etwa daran liegen, dass der Server bei HTTPS erst mal einen SSL-Handshake erwartet - wenn dieser nicht kommt, bleibt auch die Antwort aus.
Gruß, LX
Hi,
nachdem ich endlich das PostToHost zu meiner Testseite am Laufen habe, wollte ich nun einen Request an die echte Seite senden und kriege da prompt einen error 400.
eine Möglichkeit, wie der zustandekommen kann, habe ich dir bereits erläutert.
Hier nochmal der maßgebliche php-code:
... den du bitte in deinem schon existierenden Thread untergebracht hättest, anstatt hier ein Doppelposting zu produzieren.
Was meckert der andere Server da rum?
Will der noch was besonderes wegen dem SSL?
Nein. Wenn der Server bereits in verständlichem HTTP antwortet, ist die Verbindung (einschließlich SSL) korrekt hergestellt.
Ciao,
Martin