IE8 Beta 2: изменения в AJAX
С вами Сунава Дутта (Sunava Dutta), программный менеджер Internet Explorer. В мои обязанности входит работа с AJAX в браузере. Теперь, когда вышел Internet Explorer 8 Beta 2, я бы хотел рассказать вам о некоторых изменениях, которые претерпела реализация AJAX с момента релиза Beta 1.
В марте мы обсуждали
Обновления в AJAX, на которых мы решили сосредоточиться в Beta 2, касаются поддержки межплатформенности и инструментах для разработчиков, которые были бы, по их мнению, наиболее полезными. Обойдемся без лишних слов, вот они.
Этот объект встроен в браузер, чтобы упростить и обезопасить междоменные клиентские запросы. Чтобы уменьшить вероятность случайного междоменного доступа, этот объект требует четкого подтверждения для разрешения междоменного запроса от клиентского скрипта и сервера. Кроме того, данный объект избавляет от необходимости прибегать сайтам к опасной практике внедрения стороннего скрипта прямо в mashup-страницу. Эта практика опасна тем, что она открывает третьей стороне полный доступ к DOM. К вышеупомянутому изменению следует добавить улучшенную производительность на стороне клиента, а также меньшую стоимость поддержки серверов благодаря отсутствию необходимости в использовании серверных ферм как прокси-серверов.
Во время тестирования Beta 1 к нам поступало очень много жалоб, связанных с безопасностью, из-за междоменного доступа сторонних данных через использование
Обновления в XDR со времен Beta 1 позволяют теперь запрашивать данные с сервера домена, отсылая заголовок Origin с последовательным значением от источника запроса. IE8 Beta 2 вернет ответ только в том случае, если ответ сервера будет содержать Access-Control-Allow-Origin: *, при этом заголовок XDomainRequestAllowed: 1 из Beta 1 использовать запрещено. Другие изменения также включают в себя поддержку относительных путей в методе open и ограничение доступа только для HTTP и HTTPS-получателей.
Обновления в Beta 2 также включают в себя переход обработчика onmessage от объекта document в объект window для обеспечения максимального соответствия с обновленным черновиком HTML 5.0.
window.attachEvent("onmessage", HandleMessage);
Мы также заменили e.URI на e.origin - последовательную форму "схема" + "хост" + "нестандартный порт". Это намного безопаснее, так как URI может обрабатывать потенциально небезопасную информацию с родительского сайта, который не нужен для принятия решения о предоставлении или непредоставлении доступа.
if (e.origin == 'http://www.contoso.com')
{
// process message text
}
В черновиках HTML 5.0 также говорится, что параметр targetOrigin для метода postMessage теперь будет обязательным параметром, а не опциональным. Это не позволит разработчиком делать ошибки, требуя четкого подтверждения целевого назначения сообщения, благодаря точному определению первоначального <URL> или группового символа <*>.
frameOther.postMessage("This is a message", "http://example.com");
DOM Storage
Сегодня страницы используют свойство document.cookie для хранения данных на локальном компьютере. Куки ограничены в возможностях тем, что сайты могут хранить только 50 пар ключей/значений для одного домена. Кроме того, программная модель cookie громоздка и требует синтаксического разбора всей строчки cookie для получения данных. В то время, как cookie полезны для отслеживания перемещений и изменений на стороне клиента для последующей передаче на сервер, IE8 предлагает подходящие альтернативы для сценариев, подразумевающих хранение данных на стороне клиенте и четкое разграничение сессий в различных вкладках. Объекты DOM Storage из HTML 5, разрабатываемом W3C, обеспечивают намного более простую модель хранения строчек данных ключ/значение. Сайты могут хранить данные до тех пор, пока открыта вкладка или пока пользователь или сайт не удалят данные.
Также в Beta 2 изменено имя постоянного атрибута globalStorage на localStorage и удалена необходимость определять домен при записи в localStorage
// Store a key-value pair.
localStorage.setItem("FirstName","Sunava");
В IE8 Beta 2 мы включили усовершенствованную поддержку обновленного события HTML 5.0 onstorage, возвращаемого в случае изменений в хранилище. Теперь, когда локальное хранилище изменено, IE8 возвращает URI. Таким образом, обработчик страниц знает, кто вызвал последнюю транзакцию в пространстве хранилища. Следует отметить, что рабочая группа HTML 5.0 включила метод clear, которого в Beta 1 не было, в черновик стандарта. По сути данный метод позволяет скриптам удалять все доступное в их хранилищах содержимое без необходимости проведения итераций через все ключи.
Состояние подключения
XMLHttpRequest
Появление в IE8 объекта XDomainRequest ни в коей степени не означает, что мы отказались от постоянной настройки и улучшения объекта XMLHttpRequest, который продолжает быть нашим флагманским объектом для коммуникаций с тем же доменом. После выхода Beta 1 наши усилия были направлены на исправление нескольких ошибок, связанных с надежностью, работу с группой W3C над прояснением и улучшением черновиков спецификаций, соответствию наших реализаций данным черновикам и публичным тестам W3C.
// Sets timeout after open to two seconds.
xhr.timeout = 2000;
ToStaticHTML: в JSON и из JSON
Что вы делаете со строкой, возвращенной от третьей стороны с использованием XDomainRequest или Cross-document Messaging? В сегодняшнем мире с его увеличивающимся количеством скриптовых инъекций и XSS-атак, возможность обойти их с помощью безопасного парсера является желанным функцией. Как уже говорилось в статье Эрика Лоуренса (Eric Lawrence)
//Calling:
window.toStaticHTML("This is some <b>HTML</b> with embedded script following... <script>alert('bang!');</script>!");
//will return:
This is some <b>HTML</b> with embedded script following... !
Кроме того, методы
Другие функции
AJAX Navigations претерпел минимальные изменения со времен Beta 1. На
Итоги
Мы работали в рамках стандартов, чтобы улучшить удобство работы с AJAX. В будущем мы продолжим взаимодействие с членами консорциума W3C. Принятие разработчиками данных функций является для нас приоритетом, поэтому мы намерены сконцентрироваться на том, чтобы помочь сайтам перейти к интеграции данных функций. Для примеров кода набора функций AJAX, пожалуйста, обращайтесь к нашей
Сунава Дутта (Sunava Dutta),
Программный менеджер Internet Explorer
Источник:
Перевод: Zloy Kak Pё$
Комментарии
По теме
- Еще пару слов о защите пользователей IE9 от отслеживания
- [Temp] Бенчмарк HTML5 Blizzard: проверьте аппаратное ускорение вашего браузера
- [Temp] Работаем с закрепление сайтов
- Блог IE в 2010: на связи с вами
- С новым аппаратно-ускоренным годом!
- HTML5: экспериментальный и готовый к использованию
- Доступно декабрьское накопительное обновлениие безопасности для IE
- IE9 и конфиденциальность: введение в защиту от слежения
- Более быстрый и умный список Compatibility View List в IE9
- Субпиксельные шрифты в Internet Explorer 9