Http 为什么LiveId Web Auth需要使用IMAGE/GIF响应确认cookie删除?
在LiveId Web身份验证场景中,当客户端应用程序收到“clearcookie”请求时,它负责清除授权Cookie,并应通过http返回任何GIF图像来确认成功。在asp.net-mvc中使用liveid web auth的参考实现如下所示:Http 为什么LiveId Web Auth需要使用IMAGE/GIF响应确认cookie删除?,http,openid,authorization,liveid,Http,Openid,Authorization,Liveid,在LiveId Web身份验证场景中,当客户端应用程序收到“clearcookie”请求时,它负责清除授权Cookie,并应通过http返回任何GIF图像来确认成功。在asp.net-mvc中使用liveid web auth的参考实现如下所示: if (Request["action"]=="clearcookie") { string contentType; byte[] content; wll.GetClearCookieResponse(out
if (Request["action"]=="clearcookie")
{
string contentType;
byte[] content;
wll.GetClearCookieResponse(out contentType, out content);
return this.File(content, contentType);
}
其中wll.getClearCookiierResponse实现为:
public void GetClearCookieResponse(out string type, out byte[] content)
{
const string gif =
"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7";
type = "image/gif";
content = Convert.FromBase64String(gif);
}
因此getClearCookiierResponse方法创建包含微小硬编码GIF的字节[]数组
是否有任何特定的原因要求使用GIF进行响应?为什么不仅仅是纯文本(“OK”)或JSON
是否有其他(LiveId除外)协议使用返回的GIF作为响应?我这样问是因为我想知道,在需要类似通信场景的项目中,是否有任何理由采用这种解决方案
当用户退出Windows Live或Windows Live应用程序时,将尽最大努力从用户可能登录到的所有其他Windows Live应用程序中注销用户。这是通过在查询字符串中将“action”参数设置为“clearcookie”来调用每个应用程序的处理程序页面来完成的。然后,应用程序处理程序负责清除与登录相关的任何cookie或数据。成功注销用户后,处理程序应将GIF(任意GIF)作为响应返回给action=clearcookie查询
此函数返回适当的内容类型和主体响应,应用程序处理程序可以返回该响应,以表示成功从应用程序注销
您的代码应该只返回指定的图像(.gif),而不返回其他内容。额外的字节将触发错误(图像格式错误)
我想可能是任何类型的预期响应,并怀疑他们选择了GIF,因为这会导致浏览器在收到GIF时立即挂断连接。加载GIF后,浏览器是否更有可能在加载Json后断开连接?