Path: csiph.com!news.mixmin.net!weretis.net!feeder1.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Thomas 'PointedEars' Lahn Newsgroups: de.comp.lang.php Subject: Re: Webseiten mit Username und Passwort aufrufen Supersedes: <19827462.zMTsKDeAHz@PointedEars.de> Date: Thu, 12 Nov 2015 23:06:59 +0100 Organization: PointedEars Software (PES) Lines: 43 Message-ID: <2276275.86emZNHdUH@PointedEars.de> References: Reply-To: Thomas 'PointedEars' Lahn Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8Bit X-Trace: solani.org 1447366025 30802 eJwFwQkBACAIA8BK8gwxjgLrH8E7WEjU9kA4CJ5SqWd36MleEH+I1oyVZ4ypNtNoluv1fecDJLMRlw== (12 Nov 2015 22:07:05 GMT) X-Complaints-To: abuse@news.solani.org NNTP-Posting-Date: Thu, 12 Nov 2015 22:07:05 +0000 (UTC) User-Agent: KNode/4.14.2 Cancel-Key: sha1:dmDlJ8L40KjRFneLHHTAXFa1orM= X-User-ID: eJwFwYEBwDAEBMCVQvA1DvL2H6F3fkNiYOFhvr7gcz1d0xAkkKLHWlWNH0bYl15M06W2v8QViRzZg2I1f0aGFYw= Cancel-Lock: sha1:7i0+2hzQTvjywkoXENkBgghUezE= X-NNTP-Posting-Host: eJwNy8EBwCAIA8CVDBBKx6FR9h/B3v/oidQTyQwOp+mxcSatqvqwkesdCY19LErLJc4HkfavCyIUESY= Xref: csiph.com de.comp.lang.php:3533 Klaus Ketelaer wrote: > ich lese die Webseite meines Wetter-Servers einfach über die Urls > http://username:password@home.domainname.de:8081/ipwe.cgi > oder > http://username:password@192.168.92.100/ipwe.cgi > aus. (Von extern und intern) > > Das geht z.B. in Perl problemlos mit $text = get($url). > Auch in C++ oder Visual Basic gibt es keinerlei Probleme. Dort wird es entsprechende Wrapper geben, die wie cURL funktionieren. > […] > Egal ob ich es einfach mit file_get_contents($url) versuche oder die > komplizierte Variante verwende: > > $auth = base64_encode("$user:$pass"); > $header = array("Authorization: Basic $auth"); > $options = array('http' => array('method' => 'GET','header' => $header)); > $context = stream_context_create($options); > echo file_get_contents("http://$url", false, $context); > > Ich erhalte immer nur "401 Unauthorized", egal ob ich intern oder extern > auf das Gerät zugreife. > > Was mache ich da falsch? Du sendest dem Server bei der ersten Variante Information, die er ignoriert. IIRC ist die Authentifizierung über URIs bei HTTP mindestens deprecated. Kein HTTP-Client und -Server muss das noch unterstützen. Bei der zweiten Variante sendest Du ihm ein Headerfeld (“Authorization”), bevor dieser es angefordert hat (mit “WWW-Authenticate: Basic …”), und wenn er es dann anfordert, sendest Du es ihm nicht. -- PointedEars Zend Certified PHP Engineer Twitter: @PointedEars2 Please do not cc me. / Bitte keine Kopien per E-Mail.