一个关于cookie 的怪异登陆问题

近来有一些用户在某些网络环境下,登陆不了网站。通过详细的联系沟通,终于得出了结论。用户自己用http analyzer ,我在服务器端抓包。

用户端的请求头:

GET / HTTP/1.1
Accept:application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, /
Referer:http://www.zhihu.com/
Accept-Language:zh-CN
User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
UA-CPU:AMD64
Host:www.zhihu.com
Connection:Keep-Alive
Cache-Control:no-cache
Cookie:*****
我抓包得到的请求头:
GET / HTTP/1.1
Host: www.zhihu.com
Connection: keep-alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Qtnddkdrcx: zojajzrgfrdigltciezwhgoumzevhyzqexwfsgkkoyhpiyctzvwzbqzscjzqpuqrflttgfcuxuvzvfiurfjaojmgmenvrfgnqfolulvapnmnjhetvsmktvpdxxekebsrnnnzokqnyuesfldfpbgwcivwgmmjfkgtilacaixdlpibhhvckjbbsupufbjxbhuizwfuhfvyarrowwvipbzmvrh
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Accept-Encoding: gzip,deflate,sdch
Cookie:
Cookie: *****

哇塞,基本全改了,除了cookie 也是那个,不过,多了一行空的cookie 。这是一个什么网络啊!!还加了一串不知道是什么的东西。

我测试了一下,nginx 是可以把 $http_cookie 正确读取出来的,但是后端的web 读取不了,读取了第一个空的cookie 。结果,一直认为用户没有cookie ,所以,用户就不能登陆了。

nginx 针对这种情况修复一下,在所有使用proxy_pass 的地方,加一行:

proxy_set_header Cookie $http_cookie ;

这样就把cookie 硬塞给后端了。

很不负责任地讲一句,我怀疑是运营商做的手脚。当然,也有可能是该用户的上网环境导致。

Submit a Comment