GWT - 围绕Access-Control-Allow-Origin的方式?

时间:2011-09-04 09:42:03

标签: gwt gdata

我正在使用GWT制作互联网应用程序,而且我已经停留了几周的其中一项功能是让用户从谷歌数据中获取联系人数据。我已经尝试过像GWT-GData这样的东西,它们似乎与当前版本的GWT不太匹配,所以我尝试使用更加传统的OAuth方法并执行HTTP Get请求。我没有收到任何回复作为回复,也无法弄清楚为什么,我发生在我的javascript错误日志中,我得到了:

“Access-Control-Allow-Origin”

不允许“Origin [此处的站点名称]”

我已经完成了一些阅读,我对正在发生的事情有一个很好的了解,但我不知道如何在GWT中解决这个问题。我已经找到了很多关于如何利用其他平台解决问题的阅读,但我还没有看到GWT的任何内容。任何人都可以提供任何智慧吗?

编辑: 这是我正在使用的代码:

public static void doGet(String url, String oauthToken) {

        RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
        try {
            Request request = builder.sendRequest(oauthToken, new RequestCallback() {
                @Override
                public void onError(Request request, Throwable e) {
                    GWT.log(e.toString(), e);
                }

                @Override
                public void onResponseReceived(Request request, Response response) {
                    Window.alert("HEADER:" + response.getHeadersAsString() 
                            + "\nSTATUS: " + response.getStatusText()
                            + "\nTEXT: " + response.getText());
                }
            });
        } catch (RequestException e) {
            GWT.log(e.toString(), e);
        }
    }

2 个答案:

答案 0 :(得分:1)

除了将服务器配置为接受请求的来源(即将其添加到返回的Access-Control-Allow-Origin)之外,您无能为力。

因为它是GData,但它可能只是你身边的错误。请求的URL:当您以Atom格式请求数据时,没有Access-Control-Allow-Origin,仅在请求JSON时(并且值为*允许所有人,因此不应该导致任何问题,如您所见):http://code.google.com/p/chromium/issues/detail?id=45980#c2

答案 1 :(得分:0)

虽然这不能回答原始问题,但以下内容可能会帮助那些遇到与此页面相同的潜在问题的人(我正在使用带有Groovy Web服务器的GWT客户端)。这就是服务器上的技巧:

HttpExchange.getResponseHeaders().add("Access-Control-Allow-Origin","*");