Обратная передача в Iframe, вызывающая ошибку MAC Viewstate в браузере Safari - PullRequest
2 голосов
/ 02 ноября 2011

У меня есть 3 .aspx файла.Например,

GrandFather.aspx, Father.aspx and Child.aspx

Страница GrandFather.aspx содержит Iframe, а источником iframe является Father.aspx.В форме Father.aspx я вызвал Child.aspx, используя

Resposne.Redirect("Child.aspx");

В результате содержимое iframe было изменено с помощью Child.aspx.Теперь у Child.aspx есть некоторые данные формы, которые отправляются в его обратной передаче.Браузер IE, FireFox, Google Chrome работает нормально, но в Safari он показывает следующую ошибку:

System.Web.HttpException: A field validation of viewstate MAC. If a Web Farm 
or cluster is hosted by this application, please check that you have to specify 
the configuration is the same validationKey and validation algorithm <machineKey>.
AutoGenerate can not be used in the cluster.

В чем может быть причина этой проблемы?Как я могу решить это?

Я проверил источник Iframe, и он всегда показывает Father.aspx даже после Response.Redirect.

Я использую .NET 2.0 и IIS 6.0.

РЕДАКТИРОВАТЬ:

При первой обратной передаче браузер Safari показывает ошибку.Однако при следующей попытке ошибка исчезнет.

1 Ответ

0 голосов
/ 02 ноября 2011

У моей компании недавно возникла проблема с Safari + IFrame + Cookies.
По сути, Safari не принимает файлы cookie при первой загрузке Iframe. Это, конечно, вызывает все виды хаоса, в результате чего все аутентификации и сеансы не работают.

Вот еще один вопрос, связанный с Same-Origin-Policy .
В нем говорится, что Safari будет вести себя после взаимодействия пользователя со страницей Iframe. Они предлагают обходной путь, который заключается в использовании JavaScript для POST пустой формы, и Safari фактически считает это «взаимодействием с пользователем». После обновления страницы Safari в дальнейшем будет работать правильно.

Наше решение состояло в том, чтобы просто отключить Iframe для пользователей Safari. Это не было идеальным решением, но это все, что нам действительно нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...