gpt4 book ai didi

javascript - gwt grails跨域请求

转载 作者:行者123 更新时间:2023-12-02 15:38:41 24 4
gpt4 key购买 nike

我想知道如何从gwt应用程序向grails操作发出跨域请求。我知道有一个用于grails的wgt插件,但是此插件的开发是如此缓慢(因为在gwt代码中每次更改后我都必须进行编译)。因此,我尝试单独开发gwt部分,并通过ajax请求从grais应用程序获取数据。但是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操作中修改响应 header :
response.setHeader('Access-Control-Allow-Origin', "http://127.0.0.1:8888");

如果我从浏览器的标题中调用该操作,我会发现:
Access-Control-Allow-Origin:http://127.0.0.1:8888

但是是没有解决问题。我做错了什么?

提前致谢,

梅德罗德

更新:

解决方案是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})"
}

多亏了麦克风。

最佳答案

Web浏览器具有称为Same Origin Policy (SOP)的内置安全机制,可以阻止您执行此操作。

您可以使用JSONP,它会将您的响应嵌入到Javascript函数中,该函数将在文件加载并作为SCRIPT标记插入到页面中时调用。

例如,响应可能类似于:

myCallbackFunction('a string parameter', {or:{a:json:'data'}}, ...)

在页面中,您可以使用以下功能:
myCallbackFunction(str, json, ...){...}

关于javascript - gwt grails跨域请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5340225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com