2012-04-17 65 views
11

我已經從豐富的臉部3.3升級到豐富的臉部4.2,因爲ajax不適用於IE9。現在它仍然不起作用。由於錯誤導致無法完成操作c00ce56e

收到響應後IE獲得JS錯誤「SCRIPT58734:Der Vorgang konnte aufgrund des folgenden Fehlers nicht fortgesetzt werden:c00ce56e。」試圖

data.responseText=request.responseText 

上jsf.js.html?LN = javax.faces & conversationContext = 2,第1行的行21747

我認爲這是因爲incorrecct HTTP標頭的

Content-Type: text/xml;charset=UTF8 

應該是

Content-Type: text/xml;charset=UTF-8 

這裏s的原始響應erver

HTTP/1.1 200 OK 
Server: Apache-Coyote/1.1 
X-Powered-By: JSF/2.0 
Cache-Control: no-cache 
Content-Type: text/xml;charset=UTF8 
Content-Length: 293 
Date: Tue, 17 Apr 2012 15:25:22 GMT 

<?xml version='1.0' encoding='UTF8'?> 
<partial-response><changes><update id="outtest"><![CDATA[<span id="outtest"><span  class="outhello">Hello !</span></span>]]></update><update id="javax.faces.ViewState"><![CDATA[2809980525147413088:295565165947012503]]></update></changes></partial-response> 

我正在usinng

javaee-web-api 6 
myfaces-orchestra-core 1.4 
Hibernate 4.1 
Spring 3.1.1 
Richfaces 4.2.0 
Primefaces 3.2 
jsf-api+impl 2.1.7 

JSTL 1.2

和Tomcat上運行7

編輯:的 現在我敢肯定它的頭。我在charles-proxy中設置了一個斷點,並手動編輯了響應頭,編輯後的http頭IE9顯示正確的結果沒有任何錯誤

回答

18

您的分析是正確的。 Content-Type標頭中的charset屬性是錯誤的,IE9扼流圈上的錯誤爲c00ce56e

JSF默認使用從ServletRequest#getCharacterEncoding()獲得的默認值。這通常默認爲客戶指定的,或者如果沒有(通常是這種情況),則爲null。這通常可以通過調用request.setCharacterEncoding()的一些自定義過濾器進行覆蓋。

鑑於不正確的字符集,這隻能表示您的Web應用程序在某處調用request.setCharacterEncoding()而不是"UTF-8"而是"UTF8"

我會開始檢查所有過濾器及其配置。

+0

好了也想過濾器。我想我會添加一個響應過濾器來修復頭部作爲臨時修復,直到我找到導致此錯誤的過濾器。謝謝 – wutzebaer 2012-04-18 05:42:42

+0

我第二.. ..我有完全相同的問題,當我有字符集cp-1251而不是windows-1251 - 所以請留意你的編碼! – 2012-08-16 12:53:18

+1

謝謝謝謝謝謝!我的解決方法是添加字符集:'Response.ContentType =「application/json; charset = utf-8」;' – iambriansreed 2013-01-28 23:07:49

相關問題