Der Martin: HTTPS-Resource via PHP-Socket hinter Proxy laden

Beitrag lesen

Hallo Felix,

ich weiß nicht, ob ich den Knackpunkt erkannt habe, aber ...

  $http = sprintf(
    // generate HTTP request
    'GET http://%1$s/%2$s HTTP/1.1'."\r\n"    // das ist definitiv falsch!
                                              // Protokoll und Hostname haben in
                                              // dieser Zeile nichts verloren!
      // Proxy Server
      . 'Host: %1$s'."\r\n"
      // Proxy-Authorization?
      . '%3$s'
      . 'User-Agent: %4$s'."\r\n"
      . 'Connection: close'."\r\n"
      // empty line to end HTTP headers
      . "\r\n",
    $t->settings['host'],
    $url,
    (empty($t->settings['proxy-server'])
      ? ''
      : sprintf(
        'Proxy-Authorization: Basic %s'."\r\n",
        $t->settings['proxy-auth']
      )
    ),
    $t->settings['user-agent']
  );

An der kommentierten Stelle ist definitiv fehlerhaftes HTTP; es überrascht mich, dass der Server das anscheinend klaglos akzeptiert. Korrekt heißt die erste Zeile des Requests beispielsweise:

GET /sub/somedoc.txt HTTP/1.1

Wenn ich nun den String mit 'GET http://%1$s/%2$s HTTP/1.1' durch ein s ergänze, damit er nun auf 'GET https://%1$s/%2$s HTTP/1.1' lautet, ändert das nicht das Protokoll - was mich eigentlich auch gewundert hätte.

Eben. Das ändert nur den Lieferschein, der in der Sendung liegt.

Muss ich nun als Protokoll ssl://felix-riesterer.de verwenden

AFAIS ja, und zwar beim fsockopen(), denn HTTPS ist ja genau das: HTTP über eine zuvor hergestellte SSL-Verbindung. Ich habe das aber auch noch nie gemacht, daher vermute ich nur, dass es so gehen muss.

Ciao,
 Martin

--
Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
- Douglas Adams, The Hitchhiker's Guide To The Galaxy