Ergebnis 1 bis 10 von 10

Thema: cURL mit POST - INVALID REQUEST TOKEN

  1. #1
    Contao-Nutzer
    Registriert seit
    25.06.2018.
    Beiträge
    6

    Standard cURL mit POST - INVALID REQUEST TOKEN

    Hallo ich bin neu mit Contao und hatte jetzt schon überall gesucht wie man eine POST Anfrage mit cURL senden kann. Das REQUEST TOKEN kann ich ja (anscheinend) unproblematisch mittels REQUEST_TOKEN -Konstante mitschicken (Beim cURL-Post-Request), allerdings kommt trotzdem jedesmal die Ausgabe "Invalid Request Token".
    Bei der cURL-Anfrage schicke ich das Request Token mit dem Schlüssel REQUEST_TOKEN mit, zuzüglich hatte ich auch schon probiert die Parameter "FORM_SUBMIT" mit einem entsprechenden Feld-Parameter mitzuschicken, um zu testen ob Post-Requests formularabhängig sind, allerdings hatte das keine Auswirkungen.

    Hat jemand eine Idee woran das liegen könnte?

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.159
    Partner-ID
    10107

    Standard

    Du kannst nicht einfach irgendein Request Token schicken - du musst ein gültiges Request Token schicken . Das Request Token wird bei einem regulären GET Request generiert und dann in einem Formular als verstecktes Feld ausgegeben.

  3. #3
    Contao-Nutzer
    Registriert seit
    25.06.2018.
    Beiträge
    6

    Standard

    Hm heisst das die Konstante "REQUEST_TOKEN" ist nicht das Request Token welches zum mitschicken einer Anfrage benutzt werden sollte?
    Die Konstante lasse ich mir in dem rocksolid custom element ausgeben welches in der aufrufenden Seite eingebunden ist.
    Damit meine ich, ich gebe nicht "irgendein" Request Token mit, sondern das was von Contao in der Konstante hinterlegt wird.
    Nachtrag:
    Ist es normal das jede meiner Seiten das gleiche Request Token hat?
    Ich habe die Konstante in unterschiedlichen Unterseiten/Hauptseiten ausgegeben und es ist immer das gleiche.
    Das hier wäre die Testanfrage:
    $data= array("REQUEST_TOKEN"=>REQUEST_TOKEN,"Testformular Feld"=>"bla");
    $ch = curl_init($url)
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_POST, count($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);
    Geändert von Deinos (25.06.2018 um 10:22 Uhr)

  4. #4
    Contao-Nutzer
    Registriert seit
    25.06.2018.
    Beiträge
    6

    Standard

    Ok also ich habe nun einmal eine GET-cURL-Anfrage an eine Unterseite geschickt und das dortige REQUEST_TOKEN zurückgeben lassen.
    Dieses ändert sich mit jeder Anfrage, anders als beim bloßen öffnen jedweder Seite wo das Token konstant immer das gleiche ist.

    Im Weiteren versuchte ich nun dieses zurückerhaltene Token für eine POST-Anfrage zu nutzen was allerdings wieder ein Invalid Request Token als Antwort zur Folge hat.
    Ich hatte auch probiert in der Unterseite eine direkte weitere cURL-Anfrage an sich selbst zu schicken, mittels POST, was bei der ursprünglich anfragenden Seite allerdings zu keiner Rückgabe führte.
    (Also Seite1 cURL-GET -> Seite2, Seite2 cURL-POST
    -> Seite2 if bei POST rückgabe
    -> Seite2 cURL auswertung von Seite2 echo result
    -> Seite1 cURL Auswertung von Seite2
    = Leere Rückgabe in Seite1
    )
    Weiß nicht was du sonst mit erstiger GET-Anfrage für ein funktionierendes Token meinen könntest.

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.159
    Partner-ID
    10107

    Standard

    Zitat Zitat von Deinos Beitrag anzeigen
    Ok also ich habe nun einmal eine GET-cURL-Anfrage an eine Unterseite geschickt und das dortige REQUEST_TOKEN zurückgeben lassen.
    Dieses ändert sich mit jeder Anfrage, anders als beim bloßen öffnen jedweder Seite wo das Token konstant immer das gleiche ist.
    In Contao 4.0 bis 4.4 bezieht sich das gültige Request Token auf die Session. Ab Contao 4.5 wird das CSRF Token als Cookie gespeichert und mitgeschickt.

    Was genau hast du überhaupt vor?

  6. #6
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Da der Request Token meines Wissens in der User Session gespeichert wird, müsstest du auch sicherstellen, dass der Session-Cookie mit weitergereicht wird an den Post-Request. Sonst ist es für Contao ein anderer Nutzer.

  7. #7
    Contao-Nutzer
    Registriert seit
    25.06.2018.
    Beiträge
    6

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    In Contao 4.0 bis 4.4 bezieht sich das gültige Request Token auf die Session. Ab Contao 4.5 wird das CSRF Token als Cookie gespeichert und mitgeschickt.

    Was genau hast du überhaupt vor?
    Ich will Server-anfragen schicken, von einer Seite zu einer anderen, Antwort erhalten und diese verarbeiten... Das ganze mit cURL, und am liebsten als JSON übergeben, aber solange wenigstens Irgendeine Art der Kommunikation über POST funktionieren würde wäre ich schon glücklich.
    Die genutzte Contao-Version ist 4.4.19.

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.159
    Partner-ID
    10107

    Standard

    Am einfachsten ist es wohl, wenn du die Domain des Senders beim Empfänger in der localconfig.php unter
    PHP-Code:
    $GLOBALS['TL_CONFIG']['requestTokenWhitelist'] = ['example.com']; 
    einträgst. POST Requests von dieser Domain brauchen dann keine gültigen Request Tokens.

  9. #9
    Contao-Nutzer
    Registriert seit
    25.06.2018.
    Beiträge
    6

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Am einfachsten ist es wohl, wenn du die Domain des Senders beim Empfänger in der localconfig.php unter
    PHP-Code:
    $GLOBALS['TL_CONFIG']['requestTokenWhitelist'] = ['example.com']; 
    einträgst. POST Requests von dieser Domain brauchen dann keine gültigen Request Tokens.
    Hm das hatte ich eigentlich gehofft zu umgehen, da die unverbindliche Ansage war das das Token zur Kommunikation genutzt werden soll.
    Hatte jetzt nochmal das Cookie ausgelesen und mit cURL weiter geschickt aber hatte keine Änderung der Situation zur Folge.

  10. #10
    Contao-Nutzer
    Registriert seit
    25.06.2018.
    Beiträge
    6

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Am einfachsten ist es wohl, wenn du die Domain des Senders beim Empfänger in der localconfig.php unter
    PHP-Code:
    $GLOBALS['TL_CONFIG']['requestTokenWhitelist'] = ['example.com']; 
    einträgst. POST Requests von dieser Domain brauchen dann keine gültigen Request Tokens.
    Ich habe es jetzt dennoch über whitelist probiert. Im moment läuft alles über Xampp, dementsprechend kommuniziert der gleiche Contao-Server mit sich selbst und ergo eine einzige localconfig.php, welche ich bearbeitet habe, trotzdem kommt weiterhin Invalid Request Token.
    Eingetragen habe ich dort von absoluten Pfaden zu den einzelnen Artikeln bis hin zur master domain localhost.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •