0

ドメイン A から GWT プロジェクトをロードし、別のドメイン (B) にある別のサーバーからデータを取得しようとしています。そのため、SOP 違反の問題に遭遇しました。これを回避するために、サーバー B に CORS を実装しました。これで、Firefox デスクトップで実行したときに SOP の問題が解消されました。次に、ios の UIWebView で同じコードを実行してみました。ただし、SOP違反が発生しているようです:

public class MyRequestCallback implements RequestCallback {

    @Override
    public void onResponseReceived(Request request, Response response) {
        if (response != null) {
            if (response.getStatusCode() == 0) {
                // Is this a SOP violation?
            }
        }
    }
}

接続に時間がかかることがわかります (リクエストが送信されているように見えます) が、ステータス コード 0 が返されます。

誰かがこのようなことに遭遇しましたか?スタックのいくつかの異なる部分に触れるため、これをどこに投稿するかを理解するのは困難です。CORSを使用してもよいことを伝えるために設定する必要があるUIWebViewのプロパティがあるかもしれませんか?

サーバーに CORS を実装するために (jetty を使用しています)、次を使用しました: http://wiki.eclipse.org/Jetty/Feature/Cross_Origin_Filter

ありがとう

- - - アップデート - - -

これは私のフィルターが web.xml でどのように定義されているかです:

<filter-mapping>
  <filter-name>cross-origin</filter-name>
  <url-pattern>/api/v1/*</url-pattern>
</filter-mapping>

FF クライアントと iOS クライアントの両方が、私の 1 つのテスト エンドポイントにヒットしています。

4

1 に答える 1

0

桟橋を起動する方法を変更しました。現在は次を使用しています。

http://wiki.eclipse.org/Jetty/Howto/Using_Jetty_Runner

それ以外の:

http://wiki.eclipse.org/Jetty/Howto/Run_Jetty

ランナーを使用して戦争を実行すると、クロスオリジンリクエストが正常に機能します。これは、私が使用していた jetty のバージョン (v7.3) と、この質問の結果として更新したバージョン v7.6.9 の両方に当てはまります。ですから、私が以前に桟橋を始めた方法には、おそらく何らかの間違いがありました.

ありがとう

于 2013-02-06T01:37:38.467 に答える