curl + header('Location:') == andere IP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • curl + header('Location:') == andere IP

    Hallo alle zusammen,

    ich habe vor ein paar Tagen ein kleines Projekt bekommen, und das Ganze soll per cUrl realisiert werden.

    Zu meinen Vorhaben: Meine Script "muss"/soll per cUrl Content aus einer Website abrufen und verarbeiten, was auch soweit klappt.

    Das Problem liegt darin, dass wenn das cUrl-Script ausgeführt ist, soll es mich wieder auf meine Site automatisch umleiten; was ich mit header('Location: ....'); tue.
    Allerdings arbeitet unsere Website mit IP-Restriktionen, das komische dabei ist das wenn ich auf meinen Server weitergeleitet werde, ich die IP des anderen Server bekomme, also die von dem ich den Content habe und bekomme somit "Access denied" auf meiner Website.
    Wenn man normalerweise header('Location:..') benutzt, wird doch ein komplett neuer Request abgesandt oder irre ich mich da, den Moment habe ich das Gefühl das der alte Header mitgeschliffen wird, dabei werden doch aber schon vorher die cUrl Funktionen ausgeführt?
    Nun ja zu meiner Frage, wie kann dieses umgehen, gibt es da eine cUrl Option die man da setzen kann, sonst bin ich im Moment echt ratlos? Würde mich über einen Denkanstoss oder eine kleine Hilfe freuen.

    Hier ist mein Code-Snipet (cUrl):
    PHP-Code:
    $ch curl_init('http://andereSite.de/sitezumoeffnen.php');
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
        
    curl_setopt($chCURLOPT_AUTOREFERER1);
        
    $data curl_exec($ch);
        
    curl_close($ch); 
    Und hier die sitezumoefnnen.php
    PHP-Code:
    header('Location: http://meineSite.de/index.php'); 

  • #2
    macht für mich irgendwie keinen Sinn, was du da machst, du rufst irgendwo eine Seite auf, die dich auf eure eigene Seite weiterleitet? versteh den Sinn nicht dahinter..
    desweiteren kann es gut sein, dass du die IP der anderen Seite erhälst. Btw: Wie ist die IP Sperre denn realisiert?

    Kommentar


    • #3
      Original geschrieben von krel
      macht für mich irgendwie keinen Sinn, was du da machst, du rufst irgendwo eine Seite auf, die dich auf eure eigene Seite weiterleitet? versteh den Sinn nicht dahinter..
      desweiteren kann es gut sein, dass du die IP der anderen Seite erhälst. Btw: Wie ist die IP Sperre denn realisiert?
      Ein Partner von uns stellt uns Informationen und seinen Server bereit, der Server muss zwangsmässig mit cUrl abgerufen werden; zuerst werden diese Informationen verarbeitet(formatiert und auf den Server abgelegt), danach soll es wieder eine Weiterleitung auf unseren Server geben.
      Die Sperre ist per Apache realisiert.

      Ich bin mir ziemlich das das Problem mit Curl zusammenhängt.
      Zuletzt geändert von goodlike; 03.12.2008, 20:40.

      Kommentar


      • #4
        Zähle mal bitte alle Requests mit Quelle und Ziel auf. Dann wirds hoffentlich klarer.

        Kommentar


        • #5
          Original geschrieben von onemorenerd
          Zähle mal bitte alle Requests mit Quelle und Ziel auf. Dann wirds hoffentlich klarer.
          Es gibt nur einen GET-Request und der Code ist halt wie man ihn oben sieht.

          Ich mache das mal anders, damit wird das vielleicht verständlicher.

          Ich rufe diese Site (curl-code) http://.com/fw.php im Browser auf, zugleich wird intern von curl diese Site http://.com/pr.php requestet, die dann wiederum meinen header('Location') besitzt.
          Das Forwarding sieht dann so aus: fw.php (curl) -> pr.php ('Location: http://meinServer')

          Öffnet man jetzt diese beiden Urls getrennt sieht man das es der selbe Prozess ist, aber die IPs anders sind.
          Die erste URL enthält die FremdServerIp, die zweite die eigene Echte. Wie lässt sich aber nun meine echte IP trotz des ganzen Forwardings darüber übertragen.
          Zuletzt geändert von goodlike; 04.12.2008, 06:33.

          Kommentar


          • #6
            Original geschrieben von goodlike
            Es gibt nur einen GET-Request
            Stimmt nicht! Du sagst es ja selbst ...

            Ich rufe diese Site (curl-code) http://romantiker0.110mb.com/fw.php im Browser auf
            Das ist Request 1 vom Browser an Server A.
            zugleich wird intern von curl diese Site http://romantiker0.110mb.com/pr.php requestet
            Das ist der 2. Request von Server A an Server A. Die Antwort ist ein Location-Header, der auf Server B weiterleiten soll. Wegen CURLOPT_FOLLOWLOCATION wird ein dritter Request an Server B geschickt. Das macht cURL automatisch und mit den selben Settings wie beim vorherigen Request. Es geht also ein Request von Server A (fw.php) an Server B (meinServer.de/index.php).

            Öffnet man jetzt diese beiden Urls getrennt sieht man das es der selbe Prozess ist, aber die IPs anders sind.
            Die erste URL enthält die FremdServerIp, die zweite die eigene Echte. Wie lässt sich aber nun meine echte IP trotz des ganzen Forwardings darüber übertragen.
            Die IP wird nicht einfach so übertragen wie ein beliebiger GET-Parameter. Sie teilt dem entfernten Host quasi mit, woher der Request kommt. Dorthin wird auch die Antwort gechickt.
            Du willst vermutlich erreichen, dass die Ausgabe von pr.php direkt an den Browser geschickt wird statt an fw.php. Da gibt es nur eine Lösung: fw.php muß den Browser - per Location-Header - auf pr.php weiterleiten. Das Gehampel mit cURL würde dann wegfallen.

            Kommentar

            Lädt...
            X