1

vert.x にデプロイされたアプリケーションによって公開された REST Web サービスがあり、GWT アプリケーションからアクセスしようとしています。何らかの応答が得られますが、本文は空です。

http4e を使用してサービスにアクセスすると、期待どおりの応答が得られます。

GWT で通常の Web サービス アクセス コード以外に必要な構成はありますか? 以下は、Web サービスにアクセスするためのコードです。

final RequestBuilder requestBuilder = new RequestBuilder(
                RequestBuilder.POST, "https://localhost:80/login");
requestBuilder.setHeader("Content-Type", "text/plain");
requestBuilder.sendRequest("{\"userId\":\"" + username
                    + "\",\"password\":\""
                    + password + "\"}",
                    new RequestCallback() {

                        @Override
                        public void onResponseReceived(Request request,
                                    Response response) {
                                System.out.println("response:"
                                        + response.getText());
                            }

                            @Override
                            public void onError(Request request,
                                    Throwable exception) {
                                System.out.println("ex:"
                                        + exception.getMessage());
                            }
                        });

編集:クライアント側のリクエストに問題があると思います。sendRequest関数が呼び出されると、onResponseReceivedRequestCallback 実装が呼び出され、空の応答が返されます。Firebug を使用して分析したところ、POST リクエストのステータスはAbortedと報告されました。

4

1 に答える 1

2

localhost に切り替えるという事実にもかかわらず、これは CORS (Cross-Origin Resource Sharing) です。仕様によると、異なるポートは異なるオリジンを意味します。最新のブラウザは、クロスドメインXMLHTTPRequestをデフォルトで禁止しています。サーバーの応答にAccess-Control-Allow-Originヘッダーを追加する必要があります。詳細については、CORS 仕様の構文セクションを参照してください。

于 2013-02-08T03:37:06.960 に答える