• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Raw Post Data an eine andere Domain senden & andere URL auch öffnen

fadattf

New member
Hallo zusammen!

Ich stehe seit Wochen vor einem Problem wo ich keine Lösung finde.
Vlt. hat ja wer eine Idee.

Grundproblematik
Ich muss Daten an eine Schnittstelle schicken welche auf einer anderen Domain liegt.
Diese Daten müssen "raw post" (also nicht key/value pairs, sondenr direkt im body) Daten sein.
Und ich muss die URL auch gleichzeitig auf die neue Domain verweisen, da dort ein Formular geöffnet wird wo weiter gearbeitet wird.

Ich bin also auf Domain A und muss Daten via Post auf Domain B senden und mich danach auch wirklich auf Domain B befinden (in einem neuem Tab).

Folgende Ansätze habe ich bereits probiert
- Ajax + Serverseitige Lösungen (zb. requests 4 php, stream_context_create)
--- Positiv: ich kann sehr gut Header Daten und auch Raw Post Daten senden
--- Problem: Same Origin Policy. Ich bekomme Daten aus der Schnittstelle zurück, aber ich befinde mich auf meiner Domain und kann mit den Daten nichts anfangen

- simples HTML Formular welches mit JS befüllt und abgeschickt wird
--- Positiv: ich kann die Same Origin Police getrost vergessen
--- Problem: ich kann keine raw post Daten mit schicken und auch keine Header Daten

- non JS/HTML Lösungen:
--- Problem: helfen nichts, da ich wirklich aus einer eigenen Website heraus handeln muss.


Leider ist der Programmier der API nicht wirklich hilfsbereit, da bestehende Kunden mit Clientseitigen Anwendungen (also lokal installierte) zugreifen. Da ist es natürlich einfach einen neuen Post Reqeust zu erstellen.

Ich hoffe es hat jemand eine Idee oder vlt auch nur einen Ansatz den man probieren könnte.
 
Ich hätte jetzt auch den ersten Ansatz vorgeschlagen. Daran verstehe ich nur das Problem nicht. Du kannst doch mit dem Script auf deinem Server gleichzeitig zu dessen Request gegen den Fremdserver als Antwort eine Weiterleitung raus schicken, um den Browser quasi hinterher zu schicken.

Du hast ja bei der Lösung 2 Requests und 2 Responses. Request 1 ist dein Browser gegen deinen Server. Request 2 ist dein Server gegen den Fremdserver. Und bei Request 1 muss dein Serverscript ja sowieso irgendeine Art von Response senden und das könnte doch auch eine Weiterleitung sein, oder nicht?
 
Hallo!

Natürlich kann ich danach eine Weiterleitung machen - aber die bringt mir nichts, da mir dann wieder die Post Daten fehlen.

Anbei ein kurzes Beispiel wie die API vereinfacht aussieht.



PHP:
$headerDATA = getallheaders(); // Hole alle Header Daten
$postDATA = file_get_contents('php://input');   // Lese die RAW POST Daten aus

// Daten überhaupt erst bearbeiten wenn Login passt
if ( $headerDATA['login'] == 'SUPERSTRENGERLOGIN' && $headerDATA['pw'] == 'STRENGESPASSWORT' ) {

   // Analysiere postDATA ob es gültiges XML ist und stelle die Werte als Formular dar welches hier weiter verarbeitet werden kann
   .......
   .......

}


Wenn die API so aussieht, dann muss ich sowohl header Daten als auch die Post Daten sowie die Weiterleitung auf einmal machen.

Hier nun ein Beispielcode wie ich diese API mittels PHP abfragen könnte.

PHP:
$data = '<xml>.....</xml>';

$stream_options = array (
        'http' => array (
                'method' => "POST",
                'header' => "Content-type: text/xml\r\n"."login: ABC\r\npw: mypassword\r\n",
                'content' => $data
        )
);

$context = stream_context_create($stream_options);

$response = file_get_contents('http://NOT_THE_SAME_SERVER.com', false, $context);

echo $response;

Das Problem was ich jetzt mit dem Returnwert habe erkennt man an folgendem Beispiel.
Man beachte die Domains bzw die nicht angegebenen Domains bei action & src.
Das Formularziel, die Bilder, CSS & JS Files existieren hier gar nicht und es würde versucht werden die Daten von Domain A statt von Domain B (wo dieses Files ja alle liegen) zu laden.

HTML:
....

<link rel="stylesheet" type="text/css" href="css/first.css" media="screen">
<script type="text/javascript" src="js/ext/superduper.js"></script>

....

<form action='doSomething.php' method="POST" >
   <img src="/images/img1.jpg">
   <input type="text" name="vorname" value="Max" />
    </input type="submit" />
</form>
....



Die Api sieht eben vor, dass ich mich komplett mit einem Request auf Ihre Domain begebe und von dort weiter arbeite.
Vereinfacht stellt man sich das ganze am besten so vor, dass man Daten an eine fremde Domain übergibt und diese dort dann weiterbearbeitet (ich jedoch das Problem mit dem Raw Post Data habe - weil die Schnittstelle nun mal so programmiert wurde).
 
Zuletzt bearbeitet:
Hat diese lokale Anwendung, über die das normalerweise läuft, einen eigenen Browser? Denn sonst versehe ich irgendwie nicht, wie der Betreiber der API das sonst nutzt...
 
Ich kenne die lokale Anwendung nicht ganz genau. Hab es nur mal auf einem Video gesehen wie es funktioniert.
Dort geht ein neues modales Fenster auf wo wie Website aufgerufen wird.
Ich denke das Programm bedient sich dann des IE's und stellt dies im Fenster dar (natürlich ohne URL). Also wie zb eine Webview unter Android.
 
Ich würde nochmal bei dem Betreiber der API anfragen, ob er die Daten nicht doch über POST annehmen kann... eventuell ja auch über eine andere URL.
 
Habe ich schon gemacht - wurde aber abgelehnt.
Die Schnittstelle ist eben leider gar nicht für Webanfragen ausgerichtet.
Auch alle Beispiele welche ich bekomme sind in Apache Flex oder C#.
Dabei haben sie sowieso alle Daten in einer Webanwendung - wäre also eigentlich logisch wenn sie die Daten auch für Webbasierende Anfragen bereit stellen.
 
Zurück
Oben