我有一个非常简单的网页,它使用Facebook Javascript API,并作为Facebook页面上的标签安装。加载页面后,调用通常的Facebook初始化代码后,它唯一要做的就是收听auth.authResponseChange
,然后根据用户是否登录显示/隐藏各种元素。
如果我在普通的浏览器会话中通过http或https加载此页面,一切都很好。页面加载速度相当快。
但如果我在Facebook上加载页面标签,它会挂起大约两分钟。 Chrome告诉我,这种等待是因为“等待”我的页面。但是,如果我观看访问日志,直到页面显示之前我才会看到记录访问请求。因此,Facebook似乎正在掩盖幕后真正发生的事情。
答案 0 :(得分:0)
我用Facebook开了一张票,他们回答说这个问题是由我的代码引起的,并且可以与包含signed_response的任何POST重现。
经过多次刮擦和实验后,我发现将以下两行添加到处理此页面的视图中修复了它:
if 'signed_request' in request.POST:
pass
很明显,Django 1.3.1正在保持HTTP会话打开,直到您实际读取了一些POST值。哎哟。