1

在 LiveId Web Auth 场景中,当客户端应用程序收到“clearcookie”请求时,它负责清除授权 cookie,并应通过 http 返回任何 GIF 图片来确认成功。在 asp.net-mvc 中使用 liveid web auth 的参考实现如下所示:

 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 方法创建了包含微小硬编码 GIF 的 byte[] 数组。

是否有任何特殊原因需要使用 GIF 进行响应?为什么不只是纯文本(“OK”)或 JSON?

是否有任何其他(除了 LiveId)协议使用返回 GIF 作为响应?我问是因为我想知道是否有任何理由在需要类似通信场景的项目中采用此解决方案。

4

1 回答 1

0

当用户退出 Windows Live 或 Windows Live 应用程序时,会尽最大努力将用户从用户可能登录的所有其他 Windows Live 应用程序中退出。这是通过在查询字符串中将“action”参数设置为“clearcookie”来调用每个应用程序的处理程序页面来完成的。然后,应用程序处理程序负责清除与登录相关的任何 cookie 或数据。成功注销用户后,处理程序应返回一个 GIF(任何 GIF)作为对action=clearcookie 查询的响应。

此函数返回适当的内容类型和正文响应,应用程序处理程序可以返回以表示从应用程序成功注销。

您的代码应该只返回指定的图像 (.gif),而不是其他任何东西。额外的字节将触发错误(格式错误的图像)。

我想这可能是任何类型的预期响应,并怀疑他们选择了 GIF,因为它会导致浏览器在收到时立即挂断连接。

于 2010-05-13T17:03:23.427 回答