2010-03-17 7 views
3

J'ai un formulaire qui publie des valeurs sur une page dans un assistant. Quand je charge ce formulaire dans un Iframe, tout fonctionne correctement dans Firefox, cela me permet de passer à la deuxième étape de l'assistant et de maintenir les valeurs que j'ai remplies. Lorsque je le mets à l'essai dans Internet Explorer, je n'arrive pas à la seconde étape, au lieu de cela, il me renvoie à la première étape de l'assistant avec tous les champs étant vide. Quand je vérifie cela dans Fiddler, je vois que je reçois une réponse différente lorsque je poste le formulaire dans l'iframe de Firefox par rapport à Internet Explorer. Comment puis-je faire ce travail pour tous les navigateurs? Qu'est-ce que je fais mal?Formulaire Iframe non soumis dans IE mais travaillant dans Firefox

C'est ce que je reviens de Fiddler:

Firefox

Poster:

Ressult Protocol Host URL Body Caching Content-Type Process Comments Custom 
1 302 HTTP www.dmg.eu /brugman/budgetplanner/aanmelden.php 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html; charset=UTF-8 firefox:6116  

Get:

# Result Protocol Host URL Body Caching Content-Type Process Comments Custom 
2 200 HTTP www.dmg.eu /brugman/budgetplanner/ 40.677 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html; charset=UTF-8 firefox:6116 

Internet Explorer

Poste:

Result Protocol Host URL Body Caching Content-Type Process Comments Custom 
73 302 HTTP www.dmg.eu /brugman/budgetplanner/aanmelden.php 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html; charset=UTF-8 iexplore:536  

Get:

Result Protocol Host URL Body Caching Content-Type Process Comments Custom 
74 302 HTTP www.dmg.eu /brugman/budgetplanner/ 0 no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT text/html; charset=UTF-8 iexplore:536  

quelqu'un sait ce que l'espoir est la diff :).

EDIT: (plus d'info .......)

Le html

<%@ CODEPAGE=65001 %> 
<% Response.Charset = "utf-8" %> 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 

<meta name="robots" content="index,follow,noodp" /> 

<title>Hey</title> 

</head> 

<body class="body"> 

<iframe width="800px" height="1024" src="http://www.dmg.eu/brugman/budgetplanner/aanmelden.php"> 
</iframe> 

</body> 

</html> 
+0

Comment soumettez-vous le formulaire? Avec la touche "enter" ou le bouton de la souris? MSIE a tendance à faire quelque chose d'entièrement inattendu en appuyant sur la touche "enter". De plus, les en-têtes de réponse ne présentent pas vraiment d'intérêt, le débogage des en-têtes des requêtes (quels paramètres ont été envoyés? Etc) et le code PHP (quelles lignes sont exécutées, mais pas?) Donnent des informations plus intéressantes sur le problème. – BalusC

+0

J'utilise un bouton de soumission, je suis en cliquant sur ce bouton. – Younes

+0

OK, si vous ajoutez plus d'informations de débogage comme demandé, nous pouvons être en mesure d'indiquer la cause. Seuls les en-têtes de réponse ne donnent pas beaucoup à travailler. Ce n'est pas clair ce qui a été demandé et ce que le code a réellement fait :) – BalusC

Répondre

1

Dans le premier cas, je crois que la séquence des demandes/réponses est la suivante , Corrigez-moi si j'ai tort, s'il-vous plait.

Nous appellerons A brugman/budgetplanner/aanmelden.php et B/brugman/budgetplanner /.

Vous êtes sur une page X et FF vous procédez comme suit:

Request: POST A 
Response: Redirect B (that's the 302) 

Request: GET B 
Response: Result of B 

Cependant, dans IE, il semble que les suivantes:

Request: POST A 
Response: Redirect B (that's the 302) 

Request: GET B 
Response: Redirect Y (We see another 302) 

Ce qui se passe est que quelque chose dans le second cas amène B à retourner aussi un en-tête de redirection. Le problème n'est pas dans le client mais dans le serveur.

Les informations complémentaires que tout le monde réclame:

  • Quelle est la demande/réponse corps des 4 têtes de violonistes vous avez posté (Aller à inspecters, Vue Raw sur les deux volets supérieur et inférieur pour obtenir cette). Cela montrerait plus clairement les valeurs de X et Y dans mes séquences ci-dessus.
  • Qu'est-ce que dans le serveur du code PHP, le problème est presque certainement à B (/ Brugman/budgetplanner /)

En comparant les corps des la deuxième demande selon IE et FF devrait vous donner une indication de comment le serveur les voit différemment (pour le serveur, un client est juste un agent qui prépare une requête). En fonction de la différence de demandes, le serveur renvoie une réponse différente.

+0

Le problème était en effet le budgetplanner, il redirige vers la première étape de l'assistant si les sessions ne sont pas définies. Je me suis regardé aveugle sur la première partie, la soumission ... – Younes

1

Ce qui suit est le problème:

Je soumettais la forme, la vérification de la poste, puis fixer une session. Cette session n'a pas été définie, car dans IE, lorsque vous souhaitez utiliser les variables de session dans un iFrame, vous devez définir les paramètres d'en-tête.

C'est le code utilisé pour le faire:

ADD IN THIS LINE IN ORDER TO SOLVE THE INTERNET EXPLORER ALWAYS GET NEW SESSION ISSUE 
header('P3P: CP="CAO PSA OUR"'); 

Ceci est pour vous assurer que IE vous permet d'utiliser des sessions.

Plus d'informations sur: http://www.w3.org/P3P/

+1

Notez que la définition d'un en-tête P3P signifie que vous établissez une déclaration juridiquement contraignante sur la façon dont vous utilisez le cookie que vous définissez. Donc, assurez-vous que votre déclaration P3P est correcte. – EricLaw

10

info sur ce blog donne les détails et le code pour résoudre:

http://viralpatel.net/blogs/2008/12/how-to-set-third-party-cookies-with-iframe.html

Comment définir P3P en-tête http dans ASP.Net?

HttpContext.Current.Response.AddHeader("p3p", "CP=\""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""") 

Comment définir l'en-tête p3p http en PHP?

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); 

Comment définir l'en-tête HTTP p3p dans JSP?

response.setHeader("P3P","CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'") 

Comment définir l'en-tête HTTP p3p dans ColdFusion?

<cfheader name="P3P" value="CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'" /> 

levé de l'article de blog, au cas où il meurt.

+0

Ahh m'a juste sauvé des heures de débogage! Merci – cantaffordretail