Tuesday, September 26th, 2017

IE8 Beta 2: изменения в AJAX

Published on Март 2, 2009 by   ·   Комментариев нет

С вами Сунава Дутта (Sunava Dutta), программный менеджер Internet Explorer. В мои обязанности входит работа с AJAX в браузере. Теперь, когда вышел Internet Explorer 8 Beta 2, я бы хотел рассказать вам о некоторых изменениях, которые претерпела реализация AJAX с момента релиза Beta 1.

В марте мы обсуждали опыт разработчиков в реализации таких сценариев AJAX, как междоменный доступ к данным со стороны клиента, локальные хранилища данных, управление состоянием. Хорошая новость состоит в том, что наша команда со времен Beta 1 усиленно работала над тем, чтобы подстроить и обновить реализацию интернет-технологий, основываясь на данных обратной связи от разработчиков (спасибо вам за ваш вклад!), а также над внедрением последних черновиков стандартов W3C, на базе которых сделана большая часть данных технологий или которые используются для их реализации. Мы работали не только над поддержкой контента, мы также добавили несколько функций для разработчиков, но о них чуть позже.

Обновления в AJAX, на которых мы решили сосредоточиться в Beta 2, касаются поддержки межплатформенности и инструментах для разработчиков, которые были бы, по их мнению, наиболее полезными. Обойдемся без лишних слов, вот они.

XDomainRequest (XDR)
Этот объект встроен в браузер, чтобы упростить и обезопасить междоменные клиентские запросы. Чтобы уменьшить вероятность случайного междоменного доступа, этот объект требует четкого подтверждения для разрешения междоменного запроса от клиентского скрипта и сервера. Кроме того, данный объект избавляет от необходимости прибегать сайтам к опасной практике внедрения стороннего скрипта прямо в mashup-страницу. Эта практика опасна тем, что она открывает третьей стороне полный доступ к DOM. К вышеупомянутому изменению следует добавить улучшенную производительность на стороне клиента, а также меньшую стоимость поддержки серверов благодаря отсутствию необходимости в использовании серверных ферм как прокси-серверов.

Во время тестирования Beta 1 к нам поступало очень много жалоб, связанных с безопасностью, из-за междоменного доступа сторонних данных через использование кроссдоменного запроса XMLHttpRequest и инфраструктуры Access Control. Со времен Beta 1 у нас был шанс поработать с другими браузерами и участниками W3C над увеличением удобства работы на стороне сервера и увеличением безопасности инфраструктуры Access Control, разработанной W3C. В результате, мы обновили XDR до полного соответствия синтаксису и директивам, описанным в параграфах Access Control, по анонимному запросу простых сторонних данных со стороны клиента. Смотреть параграф 5.1.3 в Access Control Process Model.

Обновления в XDR со времен Beta 1 позволяют теперь запрашивать данные с сервера домена, отсылая заголовок Origin с последовательным значением от источника запроса. IE8 Beta 2 вернет ответ только в том случае, если ответ сервера будет содержать Access-Control-Allow-Origin: *, при этом заголовок XDomainRequestAllowed: 1 из Beta 1 использовать запрещено. Другие изменения также включают в себя поддержку относительных путей в методе open и ограничение доступа только для HTTP и HTTPS-получателей.

Cross-document Messaging (XDM)
Cross-document Messaging (XDM) является еще одной мощной междоменной функцией, о которой я уже писал. Вместо того чтобы делать фоновый запрос к удаленной веб-службе, данный объект позволяет сайтам, использующим сторонние гаджеты или компоненты, на основе IFrame связываться напрямую с родителем без нарушения первоначальной политики того же сайта. Этот способ имеет свои преимущества, среди которых улучшенная производительность и надежность, так как разработчикам нет необходимости обращаться к обходным маневрам, которые мало того, что в разных браузерах ведут себя по-разному, но и могут иметь нежелательные побочные явления. Эта техника также избавляет от необходимости встраивать сторонний скрипт в вашу страницу, уменьшая тем самым шансы по потенциальному раскрытию ваших конфиденциальных данных (например, информации о вашем профиле в социальной сети) третьим сторонам без вашего согласия.

Обновления в 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 теперь будет обязательным параметром, а не опциональным. Это не позволит разработчиком делать ошибки, требуя четкого подтверждения целевого назначения сообщения, благодаря точному определению первоначального или группового символа <*>.

Код:
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 не было, в черновик стандарта. По сути данный метод позволяет скриптам удалять все доступное в их хранилищах содержимое без необходимости проведения итераций через все ключи.

Состояние подключения
Свойство navigator.onLine и состояние подключен/отключен теперь также работают в Windows XP, как и в Windows Vista. Работу по реализации данной функции нельзя назвать тривиальной, так как осведомленность о подключении в Windows XP не настолько расширена, как в Windows Vista. Таким образом, это будет чрезвычайно полезно для разработчиков, которые, по нашему мнению, не должны беспокоиться о версии операционных систем. Значение состояния подключения особенно становится привлекательным при использовании совместно с атрибутом localstorage, при использовании которого в случае потери подключения к сети все данные могут быть кэшированы.

XMLHttpRequest
Появление в IE8 объекта XDomainRequest ни в коей степени не означает, что мы отказались от постоянной настройки и улучшения объекта XMLHttpRequest, который продолжает быть нашим флагманским объектом для коммуникаций с тем же доменом. После выхода Beta 1 наши усилия были направлены на исправление нескольких ошибок, связанных с надежностью, работу с группой W3C над прояснением и улучшением черновиков спецификаций, соответствию наших реализаций данным черновикам и публичным тестам W3C. Метод timeout, дебютировавший в Beta 1 ради удобства разработчиков, сейчас рассматривается для включения в спецификации XMLHttpRequest.

Код:
// Sets timeout after open to two seconds.
xhr.timeout             = 2000;

ToStaticHTML: в JSON и из JSON
Что вы делаете со строкой, возвращенной от третьей стороны с использованием XDomainRequest или Cross-document Messaging? В сегодняшнем мире с его увеличивающимся количеством скриптовых инъекций и XSS-атак, возможность обойти их с помощью безопасного парсера является желанным функцией. Как уже говорилось в статье Эрика Лоуренса (Eric Lawrence) Безопасность IE8: всесторонняя защита, метод toStaticHTML является мощнейшим способом для очистки кода вашего сайта от небезопасного контента.

Код:
//Calling:
window.toStaticHTML(«This is some HTML with embedded script following… !»);
//will return:
This is some HTML with embedded script following… !

Кроме того, методы JSON.stringify и JSON.parse имеют лучшую производительность по сравнению с последовательными Javascript-преобразователями. Наша реализация основана на предложении ECMAScript 3.1 для native-обработки JSON, которое использует API json2.js от Дугласа Крокфорда (Douglas Crockford). Кроме преимуществ в производительности, JSON-парсер является гораздо более безопасной альтернативой методу eval(), который используется довольно-таки часто при реставрации объектов JSON и может позволить исполнение случайной функции скрипта.

Другие функции
AJAX Navigations претерпел минимальные изменения со времен Beta 1. На MSDN мы разместили некоторые новые примеры кода и общую информацию по данной теме в Beta 2. Усовершенствованный параллелизм подключений также претерпел небольшие изменения и вскоре удостоится отдельной статьи.

Итоги
Мы работали в рамках стандартов, чтобы улучшить удобство работы с AJAX. В будущем мы продолжим взаимодействие с членами консорциума W3C. Принятие разработчиками данных функций является для нас приоритетом, поэтому мы намерены сконцентрироваться на том, чтобы помочь сайтам перейти к интеграции данных функций. Для примеров кода набора функций AJAX, пожалуйста, обращайтесь к нашей лаборатории IE8 AJAX Beta 2.

Сунава Дутта (Sunava Dutta),
Программный менеджер Internet Explorer

how to learn Chinese online

Источник: http://blogs.msdn.com/ie

zp8497586rq



















Смотрите также:

Tags: , , ,

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]