2016-04-17 16 views
0

Meine Rails-App verbraucht eine API, für die ich automatisch ein Formular abschicke und auf eine andere Website umadressiere. Ich mache es wie folgt:Umleitung mit API-Aufruf

<%= form_tag "https://www.<somewebsite>.action", method: :post,:protocol => 'https',:id => 'test' do %> 
    <%= hidden_field_tag 'field1', 'value1' %> 
    <%= hidden_field_tag 'field2', 'value2' %>   
    <%= hidden_field_tag 'field3', 'value3' %>  
    <% end %> 
<script>document.getElementById('test').submit();</script> 

Dies funktioniert und öffnet die andere Website in einem anderen Fenster. Ist es möglich, diese Umleitung in einem "iframe" aufzurufen, so dass die URL der anderen Website maskiert wird? Ich möchte nicht, dass der Nutzer erfährt, dass er auf eine andere Website weitergeleitet wird.

+0

Das klingt fischig und unehrlich. – max

Antwort

0

Ja, es ist definitiv möglich und für den Benutzer unsichtbar. Meine Firma hat Kunden, die das tun, damit sie unseren Code unsichtbar in ihre Seiten einbetten können.

Sie würden Ihre primäre Seite mit einem iframe darin erstellen. Wenn Ihre primäre Seite lädt würde die iframe auf Ihre eigene Seite Seite verweisen, die oben nur das Formular aus dem Code enthält:

<iframe src="your_page_with_the_form.html" name="my_iframe" width="300" height="1200" frameborder="0" scrolling="auto" style="background-color:#F7F3DE;"></iframe> 

Passen Sie die iframeheight und width entsprechend. Dann erstellen Sie Ihre_Seite_mit_der_Form.html und geben Sie Ihren form_tag Code ein.

Wenn Ihr Code dazu führt, dass die Einreichung aus der iframe herausspringt, müssen Sie möglicherweise :target => 'my_iframe' in Ihrer form_tag angeben.

Eine alternative Methode wäre, Ihr Formular auf Ihrer primären Seite zu behalten und Javascript zu verwenden, um Ihre Formulardaten an die externe API zu senden.

+0

Benutzer können Browser so einstellen, dass sie Iframe-Inhalte blockieren. – Elvn

+0

Danke user212514, ich werde Ihre Lösung versuchen ... – sacmax

0

Es ist möglich, wenn und nur wenn somewebsite den X-Frame-Options Header nicht richtig eingestellt hat.