使用RequestBuilder调用Request的问题

时间:2010-03-20 06:49:00

标签: gwt

我的代码是

    String url = "http: gd.geobytes.com/gd?after=-1&variables=GeobytesCountry,GeobytesCity";
    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL
            .encode(url));



    try {
        Request request = builder.sendRequest(null, new RequestCallback() {
            public void onError(Request request, Throwable exception) {
                  Couldn't connect to server (could be timeout, SOP
                  violation, etc.)
            }

            public void onResponseReceived(Request request,
                    Response response) {

                System.out.println(response.getText() + "Response");

                if (200 == response.getStatusCode()) {
                    Window.alert(response.getText());
                } else {
                    Window.alert(response.getText());
                }
            }
        });
    } catch (RequestException e) {
        e.printStackTrace();
    }

我收到以下错误    com.google.gwt.http.client.RequestPermissionException:网址http://gd.geobytes.com/gd?after=-1&variables=GeobytesCountry,GeobytesCity无效或违反同源安全限制     在com.google.gwt.http.client.RequestBuilder.doSend(RequestBuilder.java:378)     在com.google.gwt.http.client.RequestBuilder.sendRequest(RequestBuilder.java:254)     at com.ip.client.IpAddressTest.onModuleLoad(IpAddressTest.java:46)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)     在java.lang.reflect.Method.invoke(Method.java:597)     在com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:369)     在com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:185)     在com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:380)     在com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222)     在java.lang.Thread.run(Thread.java:619) 引起:com.google.gwt.http.client.RequestException:(NS_ERROR_DOM_BAD_URI):访问受限制的URI被拒绝

2 个答案:

答案 0 :(得分:1)

我们将GWT用于由Coldfusion服务器提供服务的UI,并在托管模式下开始看到此错误。

在IE中的可信站点区域中将安全级别更改为中低,为我修复了它。

enter image description here

答案 1 :(得分:0)

“同源策略”是浏览器为用户的安全性而实现的。如果从一个网站加载javascrip代码,则该代码无法开始向其他网站发送请求。它只能将请求发送到代码来自的相同的站点。

GWT docs提供更多详细信息。

如果您控制向浏览器提供gwt javascript的服务器,您可以在该服务器上安装一些代码,以便向您发送请求到gd.geobytes.com。