2012-04-17 86 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

相关问题