11

我已经从 Rich faces 3.3 升级到 rich faces 4.2,因为 ajax 不适用于 IE9。现在它仍然无法正常工作。

收到响应后,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 行

我认为这是因为 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 显示了正确的结果,没有任何错误

4

2 回答 2

18

你的分析是正确的。标头中的charset属性Content-Type是错误的,IE9 因错误而窒息c00ce56e

JSF 默认使用从ServletRequest#getCharacterEncoding(). 这通常默认为客户指定的,或者null如果没有(通常是这种情况)。这通常可以被一些调用request.setCharacterEncoding().

鉴于不正确的字符集,这只能意味着您的 Web 应用程序在某处调用request.setCharacterEncoding()"UTF8"不是"UTF-8".

我会开始检查所有过滤器及其配置。

于 2012-04-17T16:45:47.477 回答
0

我遇到了类似的错误,但问题出在响应标头内容长度上。我们在请求标头上有 24kb 的数据,我们必须将其减半。这解决了这个问题。我希望这可以帮助别人。

于 2018-04-06T15:52:44.153 回答