ドメイン 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 つのテスト エンドポイントにヒットしています。