Форма Iframe, не отправляемая в IE, но работающая в Firefox
-
20-09-2019 - |
Вопрос
У меня есть форма, которая отправляет значения на страницу в мастере.Когда я загружаю эту форму в 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/