2011-06-26 108 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