0

GWTからリモートサーブレットを呼び出そうとしていますが、実際にはGWT-RPCが機能していないようです。そのため、RequestBuilderを使用して呼び出しようとしています。

コードスニペットは次のとおりです。

    String url = "http://some-remote-host:8888/GWTJSTest/SomeServlet?name=" + textBox.getText();
    RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, url);
//              requestBuilder.setHeader("Origin", "*");
//              requestBuilder.setHeader("Access-Control-Allow-Origin", "*");
    try
    {
        requestBuilder.sendRequest(null, new RequestCallback()
        {
            public void onResponseReceived(Request request, Response response)
            {
                if (response.getStatusCode() == 200)
                {
                    Window.alert(response.getText());
                }else
                {
                    Window.alert(response.getText() + " : " + response.getStatusCode() + response.getStatusText());
                }
            }

            public void onError(Request arg0, Throwable arg1)
            {
                Window.alert(arg1.toString());

            }
        });
    } catch (RequestException e)
    {
        Window.alert("CATCH BLOCK: " + e.getMessage());
        e.printStackTrace();
    }

実際には、IE8はデータを返しますが、警告メッセージの後に返しますが、Firefoxは返しません!どうしてこれなの?

ご覧のとおり、私はいくつかのリクエストヘッダーを設定しようとしていますが、方法がありません。

4

3 に答える 3

0

追加しました: <add-linker name="xs" />.gwt.xml

そして、GWT-PRC(サーバーとクライアント間のJsonpRequestBuilder変換)に置き換えますJSONP

于 2011-02-12T14:30:34.373 に答える
0

自分のサーバーとポート(GWTページと同じもの)にリクエストを送信しようとしている場合は、最初の行を次のように置き換えます。

String url = "/GWTJSTest/SomeServlet?name=" + textBox.getText();

別のサーバー、または自分のサーバーの別のポートと通信しようとしている場合は、同一生成元ポリシーによりそれができなくなります。自分のサーバーからプロキシする必要があります。

于 2011-02-09T21:14:39.513 に答える
0

リモートサーブレットは、次のCORSヘッダーを設定する必要があるサーブレットです。

Access-Control-Allow-Origin: *

*または、他のドメインがリモートサーブレットと相互作用しないようにする代わりに、独自のドメインのみを指定することもできます。

于 2011-02-09T21:20:17.773 に答える