我已经从富脸3.3升级到富脸4.2因为ajax不能用于IE9。现在它仍然不起作用。
收到响应IE后,获取JS错误“SCRIPT58734:Der Vorgang konnte aufgrund des folgenden Fehlers nicht fortgesetzt werden:c00ce56e。”尝试时
data.responseText=request.responseText
on jsf.js.html?ln = javax.faces& conversationContext = 2,Line 1 Row 21747
我认为这是因为无法识别HTTP标头
Content-Type: text/xml;charset=UTF8
应该是
Content-Type: text/xml;charset=UTF-8
这是服务器的原始响应
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>
我正在使用
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显示了正确的结果,没有任何错误
答案 0 :(得分:18)
您的分析是正确的。 charset
标头中的Content-Type
属性错误,IE9因错误c00ce56e
而窒息。
JSF默认使用从ServletRequest#getCharacterEncoding()
获得的那个。这通常默认为客户端指定的,或null
如果没有(通常是这种情况)。这通常可以通过调用request.setCharacterEncoding()
的某个自定义过滤器覆盖。
鉴于字符集不正确,这只能表示您的网络应用程序位于使用"UTF8"
而非"UTF-8"
调用request.setCharacterEncoding()
的地方。
我开始检查所有过滤器及其配置。
答案 1 :(得分:0)
我有类似的错误,但问题是响应标头内容长度。我们在请求标头上有24kb的数据,我们必须将它减少到一半。这解决了这个问题。我希望这有助于某人。