Почему LiveId Web Auth требует подтверждения удаления cookie с помощью ответа IMAGE / GIF? - PullRequest
1 голос
/ 13 мая 2010

В сценарии LiveId Web Auth, когда клиентское приложение получает запрос «clearcookie», оно отвечает за очистку файлов cookie авторизации и должно подтвердить успех, вернув любое изображение GIF через http. Использование эталонной реализации liveid web-аутентификации в asp.net-mvc выглядит следующим образом:

 if (Request["action"]=="clearcookie")
 {
      string contentType;
      byte[] content;
      wll.GetClearCookieResponse(out contentType, out content);
      return this.File(content, contentType);
 }

Где wll.GetClearCookieResponse реализован как:

    public void GetClearCookieResponse(out string type, out byte[] content)
    {
        const string gif = 
          "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7";
        type = "image/gif";
        content = Convert.FromBase64String(gif);
    }

Таким образом, метод GetClearCookieResponse создает массив byte [], связывающий крошечный жесткий код GIF.

Есть ли какая-то особая причина, по которой необходимо отвечать с помощью GIF? Почему не просто текст («ОК») или JSON?

Существуют ли какие-либо другие протоколы (кроме LiveId), использующие возвращаемый GIF в качестве ответа? Я спрашиваю, потому что я хочу знать, есть ли какая-либо причина для применения этого решения в проектах, требующих подобных сценариев коммуникации.

1 Ответ

0 голосов
/ 13 мая 2010

Когда пользователь выходит из приложения Windows Live или Windows Live, делается все возможное, чтобы выйти из всех других приложений Windows Live, в которые может войти пользователь. Это делается путем вызова страницы обработчика для каждого приложения с параметром 'action', установленным в 'clearcookie' в строке запроса. Затем обработчик приложения отвечает за очистку любых файлов cookie или данных, связанных с логином. После успешного выхода пользователя из системы обработчик должен вернуть GIF (любой GIF) в качестве ответа на запрос action = clearcookie.

Эта функция возвращает соответствующий тип содержимого и ответ тела, которые может вернуть обработчик приложения, чтобы обозначить успешный выход из приложения.

Ваш код должен возвращать только изображение (.gif), как указано, и ничего больше. Дополнительный байт вызовет ошибку (искаженное изображение).

Я предполагаю, что это может быть любой ожидаемый ответ, и подозреваем, что они выбрали GIF, потому что это заставит браузер быстро повесить соединение при получении.

...