2012-03-03 6 views
1

GWTアプリケーションでクロスドメインリクエストを作成しようとしているときにクロムでこのエラーが発生する。GWTを使用したクロスドメインリクエスト

Origin http://127.0.0.1:8888 is not allowed by Access-Control-Allow-Origin. 

GETリクエストを送信するために次のコードを試しました。

import com.google.gwt.core.client.EntryPoint; 
import com.google.gwt.http.client.Request; 
import com.google.gwt.http.client.RequestBuilder; 
import com.google.gwt.http.client.RequestCallback; 
import com.google.gwt.http.client.RequestException; 
import com.google.gwt.http.client.Response; 

import com.google.gwt.user.client.ui.Label; 
import com.google.gwt.user.client.ui.RootPanel; 


public class Detracker implements EntryPoint { 
    public void onModuleLoad() { 
     doGet("http://www.google.com"); 
    } 

    public static void doGet(String url) { 
     RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url); 

     try { 
      builder.sendRequest(null, new RequestCallback() { 
       public void onError(Request request, Throwable exception) { 
        // Code omitted for clarity 
       } 

       @Override 
       public void onResponseReceived(Request request, 
         Response response) { 
        final Label msgLabel = new Label(); 
        msgLabel.setText(response.getText()); 
        RootPanel.get("resultContainer").add(msgLabel); 
       } 
      }); 

     } catch (RequestException e) { 
      // Code omitted for clarity 
     } 
    } 
} 
+0

セキュリティ上の制約のため – dldnh

+0

この –

+2

ために利用可能な任意のトリック/ハックは、私の知ることがない、残念ながら、許可されていません。私たちは、GWTアプリケーションのバックエンドで動作し、プロキシのような役割を果たす小さなサーブレットやJSPを作成しました。それは実際のJavaを実行しているので、GET/POSTパラメータを適切に渡し、応答を取得してGWTクライアントに返すことで、必要な要求を行うことができます。申し訳ありませんがコードを共有することはできませんが、それは私の雇用主に属します。 – dldnh

答えて

1

を参照してください。 :)

String message = ""; 


try { 
    URL url = new URL("working-url"); 
    URLConnection urlConn = url.openConnection(); 
    urlConn.setReadTimeout(100000); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream())); 
    String line; 

    while ((line = reader.readLine()) != null) { 
     message = message.concat(line); 
    } 
    reader.close(); 

} catch (MalformedURLException e) { 
message = e.getMessage(); 
} catch (IOException e) { 
message = e.getMessage(); 
} 
2

クロスドメイン要求にはJSONPを使用してください。 (ただし、いくつかの制限があります - メソッドをGETするだけです)

GWTのサーブレットを使用してリクエスト結果を取得し、クライアントに返すこともできます。また、いくつかのhackがiframeで存在し、html5もcrossdomainリクエストを行うことができます。

+0

私はGWTのサーブレットから同じものを試していましたが、常に型が見つからないような例外がスローされます。私もGWTQueryを試しましたが、まだそれを正しく実装することはできません。あなたはインターネット上で利用可能な実用的な例があるかどうか分かりますか? 感謝 –

関連する問題