GWT - способ обхода Access-Control-Allow-Origin? - PullRequest
3 голосов
/ 04 сентября 2011

Я делаю интернет-приложение с GWT, и одна из функций, над которыми я застрял несколько недель, - это получение контактных данных пользователей из данных Google.Я пробовал такие вещи, как GWT-GData, и они, похоже, не очень хорошо подходят для текущей версии GWT, поэтому я попытался использовать более традиционный подход с OAuth и выполнить HTTP-запрос Get.Я не получил ничего обратно в качестве ответа, и не мог понять, почему, и я наткнулся на мой журнал ошибок JavaScript, и я получаю:

"Происхождение [имя сайта здесь] не разрешеноby 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);
        }
    }

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

Вы ничего не можете сделать, кроме как настроить сервер для принятия источника запроса (т.е. добавить его к возвращенному Access-Control-Allow-Origin.

. Поскольку это GData, это может быть просто ошибкой на вашей сторонеОтносительно запрошенного URL: при запросе данных в формате Atom Access-Control-Allow-Origin отсутствует, только при запросе JSON (и тогда значение равно *, что позволяет всем, поэтому не должно вызывать никаких проблем, как вы видите):http://code.google.com/p/chromium/issues/detail?id=45980#c2

0 голосов
/ 10 июня 2013

Хотя это не отвечает на первоначальный вопрос, следующее может помочь другим, у которых есть та же самая основная проблема, которая возникла на этой странице (я использую GWT-клиент с веб-сервером Groovy). Это сделало трюк на сервере:

HttpExchange.getResponseHeaders().add("Access-Control-Allow-Origin","*");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...