【问题标题】:GWT - Way around Access-Control-Allow-Origin?GWT - 访问控制允许来源的方式?
【发布时间】:2011-09-04 09:42:02
【问题描述】:

我正在使用 GWT 制作一个互联网应用程序,我已经坚持了几个星期的功能之一是从谷歌数据中获取用户联系数据。我已经尝试过 GWT-GData 之类的东西,但它们似乎不能很好地与当前版本的 GWT 配合使用,所以我尝试使用更传统的 OAuth 方法并执行 HTTP Get 请求。我没有收到任何回复,也不知道为什么,我在我的 javascript 错误日志中发生了,我得到了:

“Access-Control-Allow-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);
        }
    }

【问题讨论】:

    标签: gwt gdata


    【解决方案1】:

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

    因为它是 GData,但它可能只是您这边的一个错误。请求的 URL:当您请求 Atom 格式的数据时,没有 Access-Control-Allow-Origin,只有在请求 JSON 时(然后值是 *,它允许所有人,所以不应该引起任何问题,就像您看到的那样):@987654321 @

    【讨论】:

    • 我已将我正在使用的代码添加到原始帖子中。它有什么问题?我要访问的地址是:google.com/m8/feeds/contacts/[emailhere]%40gmail.com/full
    • 正如我所说,请求 Atom 是不允许的:在 URL 中添加 ?alt=json;但是使用code.google.com/p/gwt-gdata 怎么样?顺便说一句,send() 的第一个参数对Method.GET 没有用。
    • 我已经尝试过 gwt-data。我无法让它在应用程序引擎上运行。由于某种原因仅在本地。当我编译并发送到服务器时,它开始出现 javascript 错误。当我回家生病尝试 ?alt=json
    • 是的,只是用 ?alt=json 尝试过,但没有成功。我只是不明白为什么我不能让它工作。我认为从谷歌查询会很容易。
    【解决方案2】:

    虽然这不能回答最初的问题,但以下内容可能会对遇到与此页面相同的潜在问题的其他人有所帮助(我正在使用带有 Groovy Web 服务器的 GWT 客户端)。这在服务器上成功了:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 2017-12-15
      • 2016-08-18
      • 2022-01-09
      • 2013-07-04
      • 2012-11-05
      相关资源
      最近更新 更多