sunny: Externe Seite einer Axis-Kamera-Applikation auslesen

Beitrag lesen

Guten Morgen,

wahrscheinlich gibt es hier wohl kaum jemanden der dasselbe wie ich schon einmal "basteln" hat müssen, aber vielleicht kann mir trotzdem jemand auf die Sprünge helfen.

Es geht darum dass wir mehrere Axis-Networkcams haben deren Stream wir auch auf unserer Website anbieten, das habe ich soweit inklusive "Fernsteuerung" der Cam per PTZ Tools mit Hilfe des Axis-Supports bereits hinbekommen. Nun geht es aber darum auch noch die Steuerungsqueue zu implentieren, und da stehe ich vor einem Problem.

Es gibt eine Axis-Seite die die jeweils benötigten Variablen ausgibt, allerdings wenn ich in meinem Frameset (ja, muss leider sein) einen Frame hinzufüge der diese Seite lädt dann kann ich von "meinem" Frame (der AxisPlugin, Steuerung etc. beinhaltet) per JavaScript darauf nicht zugreifen (da das ja domainübergreifend wäre).

Deshalb habe ich mir überlegt in  meinem Frame nicht direkt die "fremde" Seite zu laden sondern diese per PHP auszulesen und den Inhalt in meine Frameseite zu schreiben. Das wäre auch gar nicht viel, die Zeile sieht zB wie folgt aus:

<html><body><a name="1"></a><a name="60"></a><a name="4"></a></body></html>

Ich habe jetzt versucht einfach per fopen auf die Datei zuzugreifen, allerdings kommt dann ein Fehler:

Error:
<title>You must have cookies enabled in your webbrowser.</title>

Daraufhin habe ich mal nachgesehen ob die Seite etwa ein Cookie schreiben möchte, und ja, das macht sie. Allerdings nicht wenn sie per Script aufgerufen wird. Und das Cookie beinhaltet bei jedem Aufruf einen anderen Wert.

Hab mir dann auch noch den Header angeschaut und dabei festgestellt dass die Seite wohl eine Weiterleitung verursacht wenn das mit dem Cookie nicht klappt:

HTTP/1.0 302 Found
Location: /axis-cgi/ptz/cookietest.cgi?cgipathref=ptzqueue

Set-Cookie: ptz_ctl_id=17464; path=/axis-cgi/;expires=Wed, 01-Feb-2006 08:02:19 GMT

Tja, meine Frage nun, wie kann ich das lösen auf die Seite zuzugreifen sodass Sie mir denselben Inhalt ausgibt wie wenn ich per Browser darauf zugreife? Ich könnte zwar wahrscheinlich irgendwie Cookies beim Request mitsenden, allerdings ich weiß ja gar nicht was in dem Moment drinstehen muss, da ja erst die Seite selbst beim Aufruf das Cookie generiert. Oder denk ich jetzt viel zu kompliziert?

Falls es weiterhelft, ursprünglich wollte ich die Seite wie folgt auslesen:

  
//Set values  
$host = "http://85.199.1.130";  
$path = "/axis-cgi/com/ptzqueue.cgi";  
$query = "?control=request";  
$buffer = "";  
  
//Set connection  
$fp = fopen($host.$path.$query, "r");  
  
//If connection could not be established  
if (!$fp) {  
    echo("Ein Fehler ist aufgetreten, Queue derzeit nicht verfügbar");  
}  
//Connection established successfully  
else {  
    while (!feof($fp)) {  
        $buffer = fgets($fp, 4096);  
        echo($buffer);  
    }  
    fclose ($fp);  
}  

Der Axis-Support hilft mir hier leider nicht mehr weiter, außer mit der Aussage dass ich das eben selber coden muss, allerdings nicht "wie". Es gibt wohl nur einen Support für "Häufig gestellte Anfragen" wie mir mitgeteilt wurde ...

Liebe Grüße
sunny