Я сталкиваюсь с очень странным поведением в отношении фреймов и Internet Explorer.
Ситуация такая:
- У меня есть веб-приложение на www.webapp.com
- У меня есть клиент, который хочет иметь окно входа в мой www.webapp.com на своем веб-сайте: www.vendor.com
- The vendor his website is setup by his webdesigner at www.vendor.com. It consists of 2 frames:
- First frame spans 100% height and width and it's location is at www.webdedesigner.com/clients/vendor
- Второй кадр охватывает 0,0 и ни на что не указывает
Поле входа на удаленном сайте указывает на мое веб-приложение. И публикует логин + имя пользователя и т. Д. Причина, по которой веб-сайт клиента настроен с помощью фреймов, заключается в том, что адресная строка URL-адреса браузера всегда сохраняется на www.vendor.com. (Тьфу, даже не заводи меня).
Проблема в том, что когда я захожу с www.vendor.com в свое веб-приложение, и мое веб-приложение загружается во фрейме, все мои CSS и Javascript не загружаются.
Это происходит только в IE7/8, я тестировал его в Firefox, Chrome, Opera и Safari, и каждый из них действительно загружает мои файлы CSS и JS так, как должен.
Вот как выглядит мой заголовок:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="nl" xmlns:xf="http://www.w3.org/2002/xforms">
<head>
<title>My Webapp</title>
<meta http-equiv="Content-Type" content="text/html" />
<link rel="icon" href="/img/favicon.ico" />
<link rel="shortcut icon" href="/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/css/css.php?css=public" />
<script type="text/javascript" src="/js/js.php?js=public"></script>
</head>
<body>
Я подозреваю, что IE неправильно обрабатывает реляционные URL-адреса CSS/JS...
Есть еще более странная вещь! Если я очищаю кеш просмотра IE и сначала вхожу на www.webapp.com через этот домен, а затем выхожу из системы и вхожу через www.vendor.com в IE, CSS/JS загружается! Что за...? Все мое веб-приложение находится на HTTPS, поэтому оно не должно кешировать какие-либо ресурсы...
Я ошеломлен, поэтому я прибегаю к размещению здесь .. кто-нибудь знает, что случилось?
Изменить
Хорошо, после того, как я установил правильный инструмент отладки для Internet Explorer (вместо стандартного), я смог проверить отправляемые заголовки HTTP. Итак, я сравнил IE и Firefox и получил следующие результаты:
Запрос IE на вход в мое веб-приложение
(Request-Line):POST /?portal&returnurl=www.vendor.com HTTP/1.1
Accept:application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Content-Type:application/x-www-form-urlencoded
Accept-Encoding:gzip, deflate
Host:www.webapp.nl
Content-Length:40
Connection:Keep-Alive
Cache-Control:no-cache
Ответ IE
(Status-Line):HTTP/1.1 200 OK
Date:Wed, 14 Jul 2010 10:35:34 GMT
Server:Apache
X-Powered-By:PHP/5.1.6
**Set-Cookie:PHPSESSID=uiluornfipr2dk294iro09tgg6; path=/**
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma:no-cache
Set-Cookie:lang=0
Set-Cookie:lang=0
Connection:close
Transfer-Encoding:chunked
Content-Type:text/html; charset=UTF-8
Запрос IE CSS:
(Request-Line):GET /css/css.php?css=portal HTTP/1.1
Accept:*/*
Host:www.webapp.nl
Connection:Keep-Alive
Ответ IE CSS
(Status-Line):HTTP/1.1 200 OK
Date:Wed, 14 Jul 2010 10:35:35 GMT
Server:Apache
X-Powered-By:PHP/5.1.6
**Set-Cookie:PHPSESSID=pe2cio1vhu0shq2i497bjh5oa4; path=/**
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma:no-cache
Content-Length:0
Connection:close
Content-Type:text/html; charset=UTF-8
Запрос Firefox на вход в мое веб-приложение
Host www.webapp.nl
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language nl,en-us;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Ответ FF
Date Wed, 14 Jul 2010 10:38:57 GMT
Server Apache
X-Powered-By PHP/5.1.6
**Set-Cookie PHPSESSID=re10rmqq7u723ht3719o9q5el3; path=/ lang=0 lang=0**
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Connection close
Transfer-Encoding chunked
Content-Type text/html; charset=UTF-8
Запрос CSS для FF
Host www.webapp.nl
Accept text/css,*/*;q=0.1
Accept-Language nl,en-us;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
**Cookie PHPSESSID=re10rmqq7u723ht3719o9q5el3; lang=0**
Ответ FF CSS
Date Wed, 14 Jul 2010 10:38:57 GMT
Server Apache
X-Powered-By PHP/5.1.6
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Connection close
Transfer-Encoding chunked
Content-Type text/css; charset=utf-8
(Некоторые удалены для краткости)
Разница очевидна. IE не отправляет файл cookie вместе с запросом CSS, несмотря на то, что он получил набор файлов cookie из ответа на вход. Firefox отправил cookie вместе с запросом CSS. И мое веб-приложение не возвращает CSS/Script, если не установлен действительный файл cookie.
Итак, любой гуру фреймов / файлов cookie знает, почему IE не отправляет файлы cookie, полученные в первом ответе, в дальнейших запросах ресурсов для загружаемой страницы?
Цитата