我想知道如何從gwt應用程序向grails動作發出跨域請求。我知道grails有一個wgt-plugin,但是這個插件的開發非常慢(因爲我必須在gwt-code每次更改後編譯)。所以我嘗試分別開發gwt部分,並通過ajax請求從grais應用程序獲取數據。但gwt應用程序運行在不同的服務器上(gwt:port 8888,garils:port 8080)。如果我嘗試請求Grails的動作我得到這個錯誤在瀏覽器:gwt 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
UPDATE:
的解決方案是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})"
}
由於麥克風。