Camping_RIDER: Formular kapern

Beitrag lesen

Aloha ;)

Könnte ich den Content von (b) nicht vor (b) aus per Ajax nachladen und dann per javascript im DOM "einbauen" und dann das in (b) eingebaute Formular mit POST per Ajax an (a) senden? Das dürfte doch prinzipiell gehen, oder?

Da domain.org nicht der selbe Origin ist wie example.org darfst du aufgrund der same-origin-policy nicht mit einem Skript, das im Kontext example.org läuft auf Inhalte der Domain domain.org zugreifen.

Ganz so einfach wirst du das, was du willst, also nicht bekommen. Es gibt aber dennoch Möglichkeiten:

#Möglichkeit 1: CORS verwenden#

Wenn du auf beide Domains vollen Zugriff hast, kannst du auf domain.org (a) einen entsprechenden Header mitschicken, der Zugriffe aus dem Kontext von example.org explizit erlaubt.

#Möglichkeit 2: Über den eigenen Server umleiten#

Disclaimer: Ich habs nicht getestet, das ging mir nur die Tage durch den Kopf, als wir schonmal über SOP diskutiert hatten. Möglich, dass irgendwo noch ein - möglicherweise entscheidender - Denkfehler steckt.

Jedenfalls meine Idee: Während der Browser / JS durch die Same-Origin-Policy beschränkt wird, trifft das auf deinen Server (unter example.org (b)) nicht zu. Du solltest also in der Lage sein, ein php-Skript auf example.org aufzusetzen, das nichts anderes tut, als einen http-Request zum Server unter domain.org zu schicken, das Formular dadurch entsprechend abzurufen, und wieder genau so wie erhalten auszugeben. Dann kannst du bequem deinen AJAX-Request an den eigenen Server schicken, kriegst also kein Problem wegen SOP, während das Abrufen des Formulars dann über die beiden Server in direkter Kommunikation abgewickelt wird. Du erhältst natürlich ein wenig Overhead, weil eine Verbindung mehr "unterwegs" notwendig ist, und du solltest sicherstellen, dass dein php-Skript ausreichend geschützt ist[1].

Natürlich kann das durch den Domaininhaber von (a) schon auch blockiert sein / werden, aber es kann genauso gut auch wirklich so abrufbar sein.

... danach ...

...hast du ja genau das was du wolltest, nämlich eine Adresse, an die du einen AJAX-Request richten kannst, der dann entsprechend den Inhalt der Webseite unter (a) zurückliefert und aus dem man für die Verwendung auf (b) den benötigten Teil ums Formular herum extrahieren kann.

Grüße,

RIDER

--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
# Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[

  1. Es ist vielleicht bequem, aber nicht in deinem Sinn, dadurch beliebige HTTP-Requests absetzen zu lassen; du solltest zur Sicherheit die Adresse entsprechend hardcoden und Maßnahmen gegen den Zugriff von außerhalb deiner Domain treffen, damit du nicht Berge von traffic von Dritt-Nutzern bekommst. ↩︎