11

IE9ではajaxが機能しなかったため、リッチフェイス3.3からリッチフェイス4.2にアップグレードしました。今でも動作しません。

応答を受信した後、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

Tomcat7で実行しています

編集:今のところ、私はそのヘッダーを確信しています。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 に答える