2012-05-16 30 views
0

我正在開發使用symfony2網站。響應頭這麼想的改變

首先,我開始一切都很好,重定向回報301響應,在服務器錯誤Symfony返回300響應......,但現在用redirect Response symfony的我每次都返回與200狀態和meta refresh響應重定向。當發生內部服務器錯誤它ASLO返回與200狀態的響應。

在另一情況下我試圖創建RSS進料,雖然我在客戶端的內容類型設置Content-Type: application/xml是。

是不是有什麼毛病Symfony配置?

回答

2

你留下了BOM標記或某處的PHP標籤以外的空白字符?

之前做return new Response...嘗試:

if (headers_sent($filename, $linenum)) { 
    echo "Headers already sent in $filename on line $linenum\n"; 
    exit; 
} 
+0

你說得對。 php標籤後有一個空格。但爲什麼會發生?設置標題和空白字符之間的連接是什麼? –

+0

當你開始輸出任何內容時(換句話說,空白使web服務器認爲你準備發送一段內容到客戶端),PHP發送響應的頭文件。所以頭文件也會與響應一起發送,並且在發送之後,您無法更改它們--php將忽略它。 Symfony在這裏做魔術並檢查標題是否已經發送,然後用meta標記取代30x重定向。 – meze

+0

+1 - 我永遠不會想到:D –