Форма Iframe, не отправляемая в IE, но работающая в Firefox

StackOverflow https://stackoverflow.com/questions/2462464

Вопрос

У меня есть форма, которая отправляет значения на страницу в мастере.Когда я загружаю эту форму в Iframe, в Firefox все работает нормально, это приведет меня ко второму шагу мастера и сохранит значения, которые я ввел.Когда я тестирую это в Internet Explorer, я не перехожу ко второму шагу, вместо этого он возвращает меня к первому шагу мастера со всеми пустыми полями.Когда я проверяю это в Fiddler, я вижу, что при отправке формы в Iframe из Firefox я получаю другой ответ по сравнению с Internet Explorer.Как я могу заставить это работать для всех браузеров?Что я делаю не так?

Это то, что я получаю в ответ от Скрипача:

Firefox

Публикация:

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    

Получить:

#   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 ( Обозреватель Интернета )

Публикация:

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    

Получить:

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    

Надеюсь, кто-нибудь знает, в чем разница :).

Редактировать:(еще больше информации .......)

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>
Это было полезно?

Решение

В первом случае, я полагаю, последовательность запросов / ответов следующая, пожалуйста, поправьте меня, если я ошибаюсь.

Мы назовем A brugman/budgetplanner/aanmelden.php и B /brugman/budgetplanner/.

Вы находитесь на какой-то странице, X и в FF вы делаете следующее:

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

Request: GET B
Response: Result of B

Однако в IE это выглядит следующим образом:

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

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

Что происходит, так это то, что что-то во втором случае заставляет B также возвращать заголовок перенаправления.Проблема не в клиенте, а в сервере.

Дополнительная информация, о которой просят все остальные:

  • Каково тело запроса / ответа из 4 заголовков fiddler, которые вы опубликовали (перейдите в inspecters, Raw View как на верхней, так и на нижней панелях, чтобы получить это).Это более четко показало бы значения X и Y в моих приведенных выше последовательностях.
  • Что в PHP-коде сервера, проблема почти наверняка в B (/brugman/budgetplanner/)

Сравнение тел второго запроса в соответствии с IE и FF должно дать вам представление о том, как сервер видит их по-разному (для сервера клиент - это просто агент, который подготавливает запрос).Основываясь на разнице в запросах, сервер отправляет другой ответ.

Другие советы

информация в этом блоге содержит полную информацию и код для решения:

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

Как установить http-заголовок p3p в ASP.Net ?

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

Как установить http-заголовок p3p в PHP?

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

Как установить http-заголовок p3p в JSP?

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

Как установить http-заголовок p3p в ColdFusion?

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

удалено из записи в блоге, на случай, если она умрет.

Проблема заключалась в следующем:

Я отправлял форму, проверял сообщение, а затем устанавливал сеанс.Этот сеанс не был установлен, потому что в IE, когда вы хотите использовать переменные сеанса в iFrame, вы должны установить параметры заголовка.

Это код, используемый для этого:

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

Это делается для того, чтобы убедиться, что IE позволяет вам использовать сеансы.

Более подробная информация о:http://www.w3.org/P3P/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top