2013-02-27 43 views
8

我在过去的3个小时里遇到过有关Facebook登录程序的问题。Facebook如何做这些重定向?

我访问了http://m.facebook.com(安装了UA Spoofer并设置为Nokia Lumia User-Agent),并在监视标题的同时继续登录。我故意为我拥有的帐户输入了错误的密码。

当按下登录时,它向此URL发送POST请求:https://m.facebook.com/login.php?refsrc=http%3A%2F%2Fwww.facebook.com%2F&refid=8状态码返回200响应代码。

然后立即之后它GET请求这个网址:http://m.facebook.com/login.php?refsrc=http%3A%2F%2Fwww.facebook.com%2F&refid=8&e=1348022&email=frankthebutcher%40hotmail.com&signup_layout=layout%7Cbottom_clean%7C%7Cwider_form%7C%7Cprmnt_btn%7Cspecial%7C%7Cst%7Ccreate%7C%7Cheader_button%7C%7Chdbtn_color%7Cgreen%7C%7CFeb1&li=jFMuUdDWbmFhq8b-zAjEOHnE&_rdr

它是说密码不正确的URL。

但是,重定向来自哪里?第一个POST请求的响应头中没有任何内容,并且JavaScript未启用。

在Chrome上试一试。想知道它是如何做的,所以我可以调整我正在开发的移动应用程序。

已解决:在我的移动应用程序中,我向正确的URL发送POST请求,但是我使用的URL字符串是编码导致问题的。

+0

可能是一个'Location:'头被第一个请求发回(在响应处理完成后,您的浏览器会运行该头)。 – 2013-02-27 18:59:31

+0

我已经穿过带有细齿梳的头部,里面没有任何东西可以看到。 – 2013-02-27 19:00:17

+0

是的,很多移动应用都依赖全球定位系统,因此它可以调整要登录的服务器。 – Greg 2013-02-27 19:02:18

回答

6

第一个POST请求正在发送一个Location标题,它告诉浏览器从此请求开始前进,并继续处理下一个请求。第二个请求是浏览器,然后使用提供的新的Location并向前移动。

这里就是您从第一个POST响应看到:

Screenshot of response eheader http://s21.postimage.org/y238ccsfb/Untitled.png

然而,从我可以看到它是一个302redirection: found)反应,而不是一个200确定。有些东西告诉我你正在判断最终请求中的响应标题,而不是中间重定向/切换。

+0

出于兴趣,HttpWebRequest(C#)的AllowAutoRedirect属性是否跟随位置标题? – 2013-02-27 19:05:40

+0

@JamesJeffery:因为它是3xx地址,所以它会跟随(除非该属性设置为false,或者跳数已超出) – 2013-02-27 19:09:58

+0

当我监视标题时,我甚至没有看到位置标题。您是否使用较旧的UA,以便加载WAP页面而不是常规的Facebook移动页面? – 2013-02-27 19:10:11