Интересно, как сделать междоменный запрос от приложения gwt к действию grails.Я знаю, что есть wgt-плагин для Grails, но разработка с этим плагином идет очень медленно (потому что мне приходится компилировать после каждого изменения в gwt-коде).Поэтому я пытаюсь разработать часть gwt отдельно и получить данные из приложения grais с помощью ajax-запроса.Но приложение gwt работает на другом сервере (gwt: порт 8888, garils: порт 8080).Если я пытаюсь запросить действие grails, в браузере появляется эта ошибка:
XMLHttpRequest cannot load http://localhost:8080/MyApp/MyDomain/myAction.
Origin http://127.0.0.1:8888 is not allowed by Access-Control-Allow-Origin.
Я пытаюсь изменить заголовок ответа в действии grails:
response.setHeader('Access-Control-Allow-Origin', "http://127.0.0.1:8888");
И если я вызываюдействие из браузера в шапке я могу найти:
Access-Control-Allow-Origin:http://127.0.0.1:8888
Но это не решить проблему.Что я делаю не так?
Заранее спасибо,
Medrod
ОБНОВЛЕНИЕ:
Решение - JSONP.На GWT-сайте мой код выглядит так:
private void jsonp() {
JsonpRequestBuilder jsonp = new JsonpRequestBuilder();
String URL = "http://localhost:8080/MyApp/myDomain/myAction";
jsonp.requestObject(URL, new AsyncCallback<JavaScriptObject>() {
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(JavaScriptObject result) {
}
});
}
А код grails выглядит так:
def myAction = {
def results = MyDomain.findAll()
render "${params.callback}(${results as JSON})"
}
Благодаря Mic.