Post request als ersatz für Formular mit action=anderer Server

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

  • #16
    aber entweder versteht ihr nicht mein Problem nicht oder ich steh aufm Schlauch.
    Beides Denn 1) ist es nicht wirklich ein Problem Formular Daten "manuell" mittels eigenen Requests abzusetzen und daher 2) folgt aus 1) dass du aurf'm Schlauch stehen musst
    Nochmals:
    Der User schickt die Daten an Server 1. Dann öffnet Server 1 eine Verbindung zu Server 2 und jagt die Formdaten an Server 2. Server 2 wird entweder mit einem 200 OK oder mit dem 302 auf den Request reagieren. Bei 302 liest Server 1 die neue URL aus der Antwort und setzt einen neuen Request dorthin ab. Server 2 wird dann wohl mit einem 200 OK antworten. Server 1 liest die gesamte Antwort aus und schickt diese wieder an den User.
    Ich sehe keinen Grund den User direkt mit Server 2 reden zu lassen.

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #17
      So ich bin es wieder und alles ein bisschen klarer aber dennoch Probleme.
      Ich habe jetzt den POST request über cURL realisiert. s.u.

      PHP-Code:
      <?
      $postData2 = array();

      $postData2[ 'data' ] = "@" . realpath("000001.txt");
      $postData2[ 'submitButtonName' ] = 'Versenden';

      $ch = curl_init();
      curl_setopt($ch, CURLOPT_AUTOREFERER, FALSE);
      curl_setopt($ch, CURLOPT_URL, "https://www.Server2.de/Verzeichnis1/" );
      curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);
      curl_setopt($ch, CURLOPT_POST, 1 );
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER ,FALSE);
      curl_setopt($ch, URL_HTTP_VERSION_1_1,1);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

      curl_setopt($ch, CURLOPT_POSTFIELDS, $postData2 );

      $response = curl_exec( $ch );

      #echo $response;
      echo curl_error($ch);


       curl_close($ch);
      ?>
      Folgendes schickt der https://www.Server2.de/Verzeichnis1/

      Code:
      POST /Verzeichnis2/ HTTP/1.1
      Host: localhost
      Mein riesen problem ist es, Server2 denkt ich wäre auf Server2 ich befinde mich aber immer noch auf dem localhost.
      So versucht der Browser auf https://localhost/Verzeichnis2/ zuzugreifen was natürlich nicht existent ist.

      Kompletter Ablauf ist eigentlich.
      schicken ->https://www.Server2.de/Verzeichnis1/ -> https://www.Server2.de/Verzeichnis2/ -> https://www.Server2.de/Verzeichnis2/RANDOM.pdf

      Hat jemand einen Plan?
      "Nicht jeder Mensch kann und soll Programmieren[...]".

      Kommentar


      • #18
        Original geschrieben von xkl1986
        Folgendes schickt der https://www.Server2.de/Verzeichnis1/
        Wer schicht was wohin?

        Bitte in ganzen Sätzen sprechen.

        Und wenn ihr Noobs mal davon weg kommen könntet, immer von "er" zu sprechen, und stattdessen mal explizit zu sagen, wer oder was gemeint ist, wäre das auch hilfreich.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #19
          Vorneweg ich möchte nicht als noob betitelt werden, man kann ja nicht alles wissen und das Thema hängt mir mittlerweile zum Hals heraus . Jetzt frisch am Morgen kann ich mich vielleicht noch ausdrücken.

          Localhost nachfolgend als Server1 bezeichnet
          externer Server nachfolgend als Server2 bezeichnet.

          Grundsätzlich muss Server1 einen Datensatz via HTTP/POST an Server2 senden

          Testschnittstelle vom Admin des Server2
          Code:
          <html>
             <form 
             name="FilePost" 
             action="https://www.Server2.de/t1/pdf/generate"
             method="post" enctype="multipart/form-data"
             target="_blank">
            <input type="file" name="data" size="30">
            <input type="submit" value="Versenden" name="submitButtonName">
            <input type="reset" value="Löschen">
            </form>
          </html>
          Ich befinde mich dann Technisch auf dem Server2 und die Daten wurden dorthin mittels HTTP/POST übertragen.

          Server2 generiert unter /td/pdf/generate den "Auftrag" danach kommt vom Server2 ein weiter HTTP/POST der Daten an /td/pdf/generate/qs60 sendet. Hier wird die PDF Datei generiert und ich bekomme ein Refresh mit der URL IRGENDEINENUMMER.pdf.
          Also öffnet der Browser die PDF. ICh hoffe das erklärt erstmal den ablauf.
          Meinerseits muss ich das Senden via HTTP/POST ohne jegliche manuelle Schritte durchführen.

          Entscheidung cURL

          auf zurufen vieler Leute benutze ich jetzt dazu cURL.

          PHP-Code:
          <?
          $postData2 = array();

          $postData2[ 'data' ] = "@" . realpath("000001.txt");
          $postData2[ 'submitButtonName' ] = 'Versenden';

          $ch = curl_init();
          curl_setopt($ch, CURLOPT_AUTOREFERER, FALSE);
          curl_setopt($ch, CURLOPT_URL, "https://www.Server2.de//td/pdf/generate/" );
          curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);
          curl_setopt($ch, CURLOPT_POST, 1 );
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER ,FALSE);
          curl_setopt($ch, URL_HTTP_VERSION_1_1,1);
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

          curl_setopt($ch, CURLOPT_POSTFIELDS, $postData2 );

          $response = curl_exec( $ch );

          #echo $response;
          echo curl_error($ch);

          curl_close($ch);
          ?>
          Ich befinde mich dann Technisch auf dem Server1 und die Daten wurden zu Server2 mittels HTTP/POST übertragen.
          Server2 generiert unter /td/pdf/generate den "Auftrag" danach kommt vom Server2 ein weiter HTTP/POST von Daten an /td/pdf/generate/qs60, in diesem Request von Server2 steht

          natürlich in kurzform
          Code:
          POST /Verzeichnis2/ HTTP/1.1
          Host: localhost
          Ich hoffe das Problem ist jetzt klar ich befinde mich technisch auf Server1 und nicht auf Server2 weshalb dieser HTTP/POST niemals ankommt.


          Wenn jetzt noch was fehlt bitte laut rufen.
          "Nicht jeder Mensch kann und soll Programmieren[...]".

          Kommentar


          • #20
            Original geschrieben von xkl1986
            Server2 generiert unter /td/pdf/generate den "Auftrag" danach kommt vom Server2 ein weiter HTTP/POST von Daten an /td/pdf/generate/qs60
            Und wie geschieht dieser zweite POST-Request?
            Wenn er intern auf Server2 geschehen würde, sehe ich gar nicht, wo das Problem liegen soll.
            Wenn das erste Script auf Server2 an localhost postet - dann sollte localhost doch immer noch Server2 sein?

            Ich hoffe das Problem ist jetzt klar ich befinde mich technisch auf Server1 und nicht auf Server2 weshalb dieser HTTP/POST niemals ankommt.
            Wenn du also "Antwort" von Server2 einen POST Request zurückbekommst - was eigentlich blödsinnig wäre, denn auf einen Request hat ein Response zu erfolgen, und kein direkter weiterer Request - dann müsstest du wohl darin den Hostnamen ersetzen, bevor du diesen POST Request dann wieder von Server1 aus absetzt ...
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #21
              Original geschrieben von wahsaga
              Und wie geschieht dieser zweite POST-Request?
              Wenn er intern auf Server2 geschehen würde, sehe ich gar nicht, wo das Problem liegen soll.
              Wenn das erste Script auf Server2 an localhost postet - dann sollte localhost doch immer noch Server2 sein?
              Über Server2 habe ich leider keine Infos. Kann nur soviel aus den Header lesen das auf Server1 POST ein Response mit 200 kommt.
              Server2 beinhaltet ein Formular das ein <form action="/td/pdf/generate/qs60" method="POST"> mittels Javascript sofort weiter sendet. Jetzt bekommt der Browser von cURL den Response des 2. POST zurück und ruft Verzeichnis /td/pdf/generate/qs60 auf. Was natürlich nicht vorhanden ist s.a.

              Wenn du also "Antwort" von Server2 einen POST Request zurückbekommst - was eigentlich blödsinnig wäre, denn auf einen Request hat ein Response zu erfolgen, und kein direkter weiterer Request - dann müsstest du wohl darin den Hostnamen ersetzen, bevor du diesen POST Request dann wieder von Server1 aus absetzt ... s.o.

              Angehängte Dateien
              "Nicht jeder Mensch kann und soll Programmieren[...]".

              Kommentar


              • #22
                Original geschrieben von xkl1986
                Über Server2 habe ich leider keine Infos. Kann nur soviel aus den Header lesen das auf Server1 POST ein Response mit 200 kommt.
                Aha, also doch kein POST-Request "als Antwort".
                Server2 beinhaltet ein Formular [...]
                Womit wir wieder beim N-Thema wären ...
                "Die Antwort von Server2 ist ein HTML-Dokument, welches ein Formular beinhaltet ..." - das ist doch gleich viel verständlicher, lässt weniger Raum für Missverständnisse, und zeigt auch, dass du halbwegs weisst, wovon du redest.
                das ein <form action="/td/pdf/generate/qs60" method="POST"> mittels Javascript sofort weiter sendet. Hier bekommt der Browser von cURL den Response des 2. POST zurück
                cURL interpretiert also Javascript ...?

                Ich würde doch eher davon ausgehen, dass es sich folgendermaßen abspielt:
                - Script auf Server1 schickt POST-Request per cURL an Server2
                - Server2 schickt HTML-Dokument als Antwort, welches HTML-Formular enthält, welches auf localhost verweist.
                - Dein Script auf Server1 gibt diese Antwort unbearbeitet an den Client weiter
                - Client interpretiert HTML-Dokument, führt Javascript aus, will Formular abschicken - dummerweise an "seinen" localhost


                Wenn das so richtig laufen soll, müsstest du also natürlich die Formular-action anpassen, bevor du das Formulardokument an den Client weitergibst.

                Wobei ich dann nicht mehr ganz verstehe, wieso der erste POST-Request überhaupt per Script gemacht wird, und nicht auch gleich vom Client ...?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #23
                  es hat gerade klick gemacht und es funktioniert, meine güte und damit schlage ich mich solange herum
                  "Nicht jeder Mensch kann und soll Programmieren[...]".

                  Kommentar

                  Lädt...
                  X