Aloha ;)
Alles klar. Die Same Origin Policy lässt es nicht zu, dass ich per xhttprequest von (b) auf (a) zugreife.
Richtig.
Nun gibt es eine Möglichkeit, diese grundsätzliche Beschränkung aufzuheben und den Zugriff explizit zu erlauben. Die heisst CORS und funktioniert so dass im Header von (a) die Info mitgeliefert wird, dass es (b) erlaubt ist, auf (a) zuzugreifen.
Auch richtig.
Ich kann das Formular von (a) im Content von (b) nur in einem iFrame anzeigen. Um das was ich vorhabe zu realisieren, muss (a) immer irgendwie angepasst werden.
Nein. Ich würde an deiner Stelle dann mal Möglichkeit 2 ausprobieren - ein PHP-Skript auf (b), dessen Inhalt sowas ist wie
<?php echo file_get_contents("http://domain.org/form.php"); ?>
(vielleicht etwas weniger minimalistisch, aber für einen ersten Test sollte das reichen) und dann kannst du an dieses PHP-Skript auf (b) einen XMLHttpRequest absetzen, der dir im günstigsten Fall das zurückgibt, was du brauchst - nämlich das HTML-Dokument unter http://domain.org/form.php
, welches du dann mittels Javascript (oder schon in deinem PHP-Skript vor dem echo, wie du willst - das hätte den Vorteil von weniger Traffic) auf das benötigte Formular zusammenschnippelst, welches du dann am Ort deiner Wahl mit innerHTML
einhängen kannst.
Keine Garantie, dass es funktioniert (es gibt Umstände und Einstellungen im Bereich sowohl von (a) als auch von (b), die das verhindern könnten), aber einen Versuch ist es wert, denke ich. Zumal ein einfacher Test sehr zügig geht. Wenn du etwas mächtigeres als file_get_contents
brauchst / willst (z.B. um nicht nur den Dateiinhalt, sondern auch die Header mit zu verwursten) kannst du cURL verwenden.
Und da ich selbst (a) nicht anpassen kann, sollte diese Anpassung mit so wenig Aufwand wie möglich vorzunehmen sein.
Auch CORS ist nicht viel Aufwand; das ist ein Eintrag in einer htaccess-Datei im Zweifelsfall. Geht aber eben nur, wenn du Zugriff auf (a) hast oder dir das jemand, der Zugriff auf (a) hat, einträgt.
Wenn (a) und (b) auf der selben Maschine laufen, dürfte es ja mit relativ wenig Aufwand möglich sein, das Formular nicht nur über (a) sondern auch über (b) auszuliefern. Dann dürfte ich den Content ja relativ einfach per Ajax abholen und per JS in meine Seite einbauen können um es dann genauso per Ajax zu verschicken, die Response auszuwerten dann genauso per JS in meine Seite einzubauen.
Auch richtig.
Grüße,
RIDER