所以這裏有一些令我費解的東西。奇怪的HTTP響應頭只發送到Internet Explorer 8
我正在研究一個需要解析XML數據的Javascript,我正在使用jQuery的$ .ajax來獲取和解析數據。除了使用Internet Explorer 8進行測試(它也可能是7和9的問題)以外,它在任何地方都能很好地工作。在IE瀏覽器,我得到解析錯誤。我安裝了一個console.log來檢查HTTP標頭。這是我從Chrome中獲得Windows XP和什麼我從IE越來越 -
鉻:
Date: Sat, 09 Apr 2011 16:06:24 GMT
Connection: Keep-Alive
Content-Length: 2283
Last-Modified: Sat, 09 Apr 2011 15:59:12 GMT
Server: Apache/2.2.14 (Ubuntu)
ETag: "48048-8eb-4a07e6c693400"
Content-Type: application/xml
Accept-Ranges: bytes
Keep-Alive: timeout=15, max=97
IE8:
LOG: ETag: "48048-8eb-4a07d7a3cbe40"
Keep-Alive: timeout=15, max=97
Content-Type: text/html
Content-Length: 2283
Last-Modified: Sat, 09 Apr 2011 14:51:29 GMT
這是XML文檔的樣子:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<tweet>
<name>name</name>
<message>message</message>
<avatar>avatar</avatar>
</tweet>
<tweet>
<name>name</name>
<message>message</message>
<avatar>avatar</avatar>
</tweet>
</root>
我檢查了我的Apache服務器的MIME配置,它被設置爲發送xml文件作爲'應用程序/ XML」。所以奇怪的是向Chrome發送內容類型的'application/xml',但IE獲取'text/html'的內容類型。
所以我建立了一個簡單的PHP腳本:
<?php
header('Content-type: application/xml; charset=UTF-8');
echo '<?xml version="1.0" encoding="UTF-8" ?>';
?>
<root>
<tweet>
<name>name</name>
<message>message</message>
<avatar>avatar</avatar>
</tweet>
<tweet>
<name>name</name>
<message>message</message>
<avatar>avatar</avatar>
</tweet>
</root>
當我改變了Javascript來檢索PHP的XML文件,而不是,我得到這些響應頭 -
鉻與PHP:
Date: Sat, 09 Apr 2011 16:10:39 GMT
X-Powered-By: PHP/5.2.10-2ubuntu6.7
Connection: Keep-Alive
Content-Length: 2102
Server: Apache/2.2.14 (Ubuntu)
Content-Type: application/xml; charset=UTF-8
Keep-Alive: timeout=15, max=97
IE與PHP:
LOG: X-Powered-By: PHP/5.2.10-2ubuntu6.7
Content-Length: 2102
Keep-Alive: timeout=15, max=100
Content-Type: application/xml; charset=UTF-8
因此,從我所知道的情況來看,使用我有限的Apache知識,似乎原始XML文件僅在IE沒有正確的內容類型的情況下發送,儘管我已將它配置爲發送'application/xml'。 Chrome正在接收正確的內容類型。當我使用PHP時,Apache似乎遵循我的意願併發送'application/xml',因爲這是我在腳本中加蓋的內容。 IE瀏覽器沒有與Chrome相同的標題也很奇怪嗎?例如「服務器」缺失。
那麼,可能會有什麼可能阻礙Internet Explorer的「application/xml」變爲「text/html」呢?我討厭不得不依賴PHP腳本來輸出我的XML數據。我想到mod-deflate,但我禁用它,結果是一樣的。
任何想法?
(PS - 我包括XML僅僅是一個示例,因此,內容的長度不匹配)
所以...這是一個網絡服務器管理問題?更適合服務器故障? – Kissaki 2011-04-09 16:36:03
更多樂趣和興奮,我改變了我的XML文件的擴展.tweets,我把一個「將AddType應用/ XML的tweets」到我的Apache2指示該目錄。 Internet Explorer爲.tweets文件獲取正確的內容類型!所以什麼地方,什麼似乎中斷Apache的標題爲Internet Explorer,但只能用.xml文件(也許其他標準類型)。對不起,我不知道關於serverfault.com。我想我會在那裏嘗試。 – JonMcL 2011-04-09 16:44:58