2011-06-26 106 views
6

我有一个VM网络服务器内的许多重定向,当使用嵌入式导航器(iceweasel)浏览服务器时工作。但是从托管机器的浏览器访问服务器时不起作用(使用FF4/IE8/Chrome/Opera11进行测试)。php重定向 - HTML标头

所有有经验的重定向方法都会导致主机浏览器中的“服务器不可用或超载”。

如果你可以看看从Apache日志的标题和提供有关差异的一些提示(主要一个看起来是GET网址,提供相同的代码运行时):

工作请求导致这个日志:

cat /var/log/apache2/access.log | grep 127 | grep random | tail -n1 
127.0.0.1 - authuserid [26/Jun/2011:11:11:52 +0200]  
"GET /index.php?page=100 HTTP/1.1" 200 49151 
"https://www.mydomain.foo/index.php?page=100&new_session=a4da9106dba2ffd40345a5eb624d7788&random=c0117685e7e65a307989c219efc587b4&sid=n7en2it41h2gumrcq3kmmil3c0&sidf=.ps_AWDkIY" 
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.19) Gecko/2011050718 Iceweasel/3.0.6 (Debian-3.0.6-3)" 

非工作请求,导致该日志:

cat /var/log/apache2/access.log | grep 192 | grep random | tail -n1 
www.mydomain.org:80 192.168.X.Y - authuserid [26/Jun/2011:11:08:07 +0200] 
"GET /index.php?page=100&new_session=a4da9106dba2ffd40345a5eb624d7788&random=685de8bcd4d198d6ad7f3cf4b23de5b7 HTTP/1.1" 302 - 
"http://www.mydomain.foo/index.php?page=xyz"  
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1" 

我无法显示标题响应,因为我没有得到响应,也没有报告由apache(loglevel = error)报告的错误。

THX

控制做到:
我增加了浏览器超时(FF:network.http.keep-alive.timeout〜3600:没有变化
我检查了没有标题先前发送到重定向:ok(headers_sent()的转储显示没有发送头文件,也没有包含空行或空格)
我增加了Apache服务器超时以防万一:无变化
我确信使用一个绝对URL作为HTTP/1.1。 我试过PHP,HTML 和JS重定向:没有变化

编辑1:

这里是作为 “非工作” 的情况下看到通过的LiveHTTPHeaders标题:


http://www.mydomain.org/menus/noeud4.php
POST /menus/noeud4.php HTTP/1.1
主机:www.mydomai n.org
User-Agent:Mozilla/5.0(Windows NT 6.1; WOW64; rv:2.0.1)Gecko/20100101 Firefox/4.0.1
Accept:text/html,application/xhtml + xml,application/xml; q = 0.9,/; q = 0.8
Accept-Language:fr ,fr-fr; q = 0.8,en-us; q = 0.5,en; q = 0.3
Accept-Encoding:gzip,deflate
Accept-Charset:ISO-8859-15,utf-8; q = 0.7 ,*; q = 0的。7
保持活动:3600
DNT:1个
连接:保持活着
的Referer:http://www.mydomain.org/index.php?page=890
曲奇:PHPSESSID = 4bge5gg1rgkit78k3seqlfcbq2
授权:基本aW52aXRlZEBjYW1hY2FzYTp5b3VybXlndWVzdEB0b2RheQ ==
内容类型:应用/ X- WWW窗体-urlencoded
的Content-Length:98
登录名= my_superlogin1 & pwd1 = vbigpass3xqz%40A2L &验证码= 91690 &源= noeud4.php &> formulaire_valide = SOUMETTRE
HTTP/1.1 302实测值
日期:星期日,2011年6月26日14点17分27秒GMT
服务器:Apache/2.2.9(Debian的)DAV/2 SVN/1.5.1的mod_fastcgi/2.4 .6 mod_python/3.3.1 Python/2.5.2> mod_ssl/2.2.9 OpenSSL/0.9.8g PHP/5.3.3
X-Powered-By:PHP/5.3.3
Expires:Thu,19 Nov 1981八点52分00秒GMT
缓存控制:无店铺,无缓存,必重新验证,检查后= 0,预检查= 0
杂注:无缓存
地点:http://www.mydomain.org/index.php?page=100&new_session=a4da9106dba2ffd40345a5eb624d7788
有限公司ntent-长度:0
保持活动:超时= 60
连接:保持活动
的Content-Type:text/html的


http://www.mydomain.org/index.php?page=100&new_session=a4da9106dba2ffd40345a5eb624d7788
GET /index.php?page=100 & new_session = a4da9106dba2ffd40345a5eb624d7788 HTTP/1.1
Host:www.mydomain.org
User-Agent:Mozilla/5.0(Windows NT 6.1; WOW64; rv:2.0.1)Gecko/20100101 Firefox/4.0.1
Accept:text/html,application/xhtml + xml,application/xml; q = 0.9,/; q = 0.8
Accept-Language:fr ,fr-fr; q = 0.8,en-us; q = 0.5,en; q = 0.3
Accept-Encoding:gzip,deflate
Accept-Charset:ISO-8859-15,utf-8; q = 0.7 ,*; q = 0.7
保持活动:3600
DNT:1
连接:保持活着
的Referer:http://www.mydomain.org/index.php?page=890
曲奇:PHPSESSID = 4bge5gg1rgkit78k3seqlfcbq2
授权:基本aW52aXRlZEBjYW1hY2FzYTp5b3VybXlndWVzdEB0b2RheQ ==

HTTP/1.1 302实测值
日期:星期日,2011年6月26日十四时19分59秒GMT
服务器:Apache/2.2.9(Debian的)DAV/2 SVN/1.5 .1 mod_fastcgi/2.4.6 mod_python/3.3.1 Python/2.5.2> mod_ssl/2.2.9 OpenSSL/0.9.8g PHP/5.3.3 X-Powered-By:PHP/5.3。3
到期日:星期四,1981年11月19日8点52分00秒GMT
缓存控制:无店,无缓存,必重新验证,后检查= 0,预检查= 0
附注:无-cache
位置:https://www.mydomain.org/index.php?page=100&new_session=a4da9106dba2ffd40345a5eb624d7788&sid=4bge5gg1rgkit78k3seqlfcbq2&sidf=.ps_Z5wRio
的Content-Length:0
保持活动:超时= 60
连接:保持活动
的Content-Type:text/html的


EDIT2: 比较的请求/响应(工作/不工作)这两种情况下,我分离等等以下2点主要区别:

在 “工作” 的反应:
状态:200 ,其我没有关于“不工作”的反应,但我不明白为什么。

的 “非工作” 的回应:
DNT:1
它代表选项Do Not Track (me) from FF4
所以我试图取消激活这个选项,但结果相同。

我可能会错过sthg。所有看起来好像服务器已关闭。会话cookie(76 kb)可能太大。我也尝试将firefox 4降级到3.6,因为这是另一个更改的参数,但我仍然使用FF3.6与FF4一样获得了相同的响应。

+1

你可以使用LiveHTTPHeaders(用于Firefox)或类似的东西来看看头文件吗? – Halcyon

+1

听起来像是域名/ DNS/VHosting的问题。你有没有在虚拟机'/ etc/hosts'文件中设置需要复制到主机的别名?主机是否提供任何DNS服务给虚拟机内部不需要更换的虚拟机?如果来自主机的请求使用不同的域名,您是否使用基于名称的Apache VHosts,这可能意味着来自主机的请求被路由到不同的VHost配置。 – Robin

+0

@Frits van Campen:Thx,这正是我试图用萤火虫实现的。我使用“阻止”标题进行编辑。 – hornetbzz

回答

1

正如你可以请求你看到张贴您尝试打: http://www.mydomain.org/menus/noeud4.php 但你会重定向到http://www.mydomain.org/index.php?page=100&new_session=a4da9106dba2ffd40345a5eb624d7788,然后再https://www.mydomain.org/index.php?page=100&new_session=a4da9106dba2ffd40345a5eb624d7788&sid=4bge5gg1rgkit78k3seqlfcbq2&sidf=.ps_Z5wRio

是否继续发出302头?

我猜noeud4.php脚本是一些登录脚本,可能会创建一个会话,并可能设置一些cookie。我的猜测是检查是否正确完成 - 并找出为什么投掷302

+0

好猜:表单page_890将数据发布到noeud4,分析数据,在服务器上启动一些cookie。然后,page_890将重定向到表单,如果它们不符合规定的数据,或者如果没有问题,则重定向到索引。然后index.php获取sid和sidf cookie以保持下一步的会话在所有登录条件都满足的情况下切换到https:如果是,则索引重定向到他自己,但改为https。 – hornetbzz

+0

@Frits,@bob,@robin:Thx家伙。不知道我做了什么,但它看起来像更改2个代码块并启发会话cookie解决了问题。这整个代码太敏感了,因为还有一些问题。接下来我将使用一个框架......我接受这个答案,因为这帮助我明显找到原因。 – hornetbzz

+0

注意:我还在Apache中禁用了mod_expire和mod_deflate。 – hornetbzz