2017-01-28 3 views
0

J'ai deux domaines A et B.forme interdomaine soumission incompatible

A accueille une forme A/inquire qui présente une demande de poste à B/form-submission B accepte une requête POST à ​​B/form-submission et redirige vers A/thankyou

Une chose délicate ici est que A héberge le formulaire à l'intérieur d'un alors quand l'utilisateur soumet le formulaire, l'iframe rebondit à B puis revient à A.

Environ 10-20% des utilisateurs rencontrent un problème en soumettant les résultats du formulaire dans l'iframe pas redirection vers A/thankyou, mais les données de formulaire sont toujours enregistrées, de sorte que le script de B/form-submission doit être terminé.

B/form-soumission (PHP):

header('Access-Control-Allow-Origin: *'); 
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding"); 
header('Access-Control-Allow-Methods: GET, POST, PUT'); 

... process form and insert data into db - works 100% of the time ... 

header("Location: A/thankyou"); 
exit(); 

Bien sûr, je suis incapable de reproduire moi-même ...

Y at-il un moyen d'améliorer la fiabilité de cette situation? Cela ne semble pas être lié au traitement de mon formulaire car la dernière chose qui arrive avant la redirection est une insertion de base de données qui passe toujours par.

+0

Peut-être cela peut aider: http://stackoverflow.com/questions/ 14504516/browser-wont-let-iframe-do-the-redirect –

+0

Essayez de définir l'en-tête 'X-Frame-Options' dans toutes les pages qui vont être chargées dans l'iframe. – Gabriel

Répondre

0

Merci aux commentateurs Gabriel et Taron.

Ruby on rails 4 app does not work in iframe

Le paramètre qui brise iFrames sur des sites distants est-Options de X-Frame. Par défaut, ce paramètre est réglé SAMEORIGIN, ce qui empêche le contenu d'être domaine transversal de chargement:

config.action_dispatch.default_headers = { 
    'X-Frame-Options' => 'SAMEORIGIN' 
} 

L'ajout de ce problème résolu mon