2009-10-05 4 views
0

Я делаю веб-приложение для клиента, у которого есть клиенты, которые хотят помещать логин в приложение внутри iframe на своих веб-сайтах. При успешном входе в систему мы хотим открыть приложение в новом всплывающем окне, но кажется, что сеанс вошедшего сеанса сохраняется только внутри iframe, а не в главном окне или во всплывающем окне. Это только проблема в IE, а не в любом другом браузере.Как сохранить состояние сеанса из iframe во всплывающем окне?

Есть ли способ реализовать это?

Течение это:

  1. Пользователь переходит на сайт клиента (www.url1.com)
  2. пользователь входит в приложение, которое в фрейма (от www.url2.com)
  3. App в IFRAME проверяет Войти
  4. App в IFRAME использует window.open для открыть приложение в новом отдельном окне

EDIT: Fiddler показывает, что то, что происходит в iframe, привязано к одному процессу iexplore, и то, что происходит в главном окне, привязано к другому. Это, очевидно, проблема, можно ли ее обойти?

ответ

3

Настройка файлов cookie в iframe, который загружает страницу из другого домена, иногда может вызвать некоторые странные проблемы. И если файлы cookie не работают, скорее всего, ваш логин не будет работать. Чтобы обойти это в предыдущем случае, мне нужно было добавить пользовательский HTTP-заголовок в IIS/Code, который внезапно заставил все работать.

Образец C# код:

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\""); 
} 
+0

Это называется P3P, и это юридическое заявление о том, что вы обещаете использовать куки. См. Q # 7 здесь: http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx – EricLaw

+0

Спасибо за ссылку, это действительно полезно. –

+0

Вот статья MS KB, также объясняющая это: http://support.microsoft.com/kb/323752 – Cros

1

Попробуйте использовать Fiddler, чтобы проверить, будут ли файлы cookie, созданные на странице входа (в iframe), отправляться на вновь открытое всплывающее окно. Если нет, это может быть установка в IE, которая предотвращает это.

Редактировать: Чтобы увидеть печенье в Скрипач идти на инспекторов вкладку, затем заголовки. В заголовках запроса (вверх) вы увидите файлы cookie, отправленные с сервера в браузер. В заголовках ответа (вниз) вы увидите файлы cookie, отправленные из браузера на сервер (их следует отправить обратно в браузер для последующих запросов).

+0

Как проверить, что печенье отправляется в окно в Fiddler? – Cros

Смежные вопросы