应用程序的请求的生成器问题(同一网站策略的问题?)
-
24-09-2019 - |
题
我尝试应用程序中这个'结构':
1)我写了一个后端服务器在蟒蛇,这将产生json输出(运行在localhot:8094)
2)我已经写了一个非常简单的应用程序的应用程序,将使用RequestBuilder设置获得向python服务器(在发展模式的应用程序蚀插件,它是可以通过 http://127.0.0.1:8888/test.html)
代码是简单
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class Test implements EntryPoint {
/**
* The message displayed to the user when the server cannot be reached or
* returns an error.
*/
private static final String SERVER_URL = "http://localhost:8094";
private static final String SERVER_ERROR = "An error occurred while "
+ "attempting to contact the server. Please check your network "
+ "connection and try again.";
/**
* This is the entry point method.
*/
public void onModuleLoad() {
RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, SERVER_URL);
try {
requestBuilder.sendRequest(null, new Jazz10RequestCallback());
} catch (RequestException e) {
Window.alert("Failed to send the message: "
+ e.getMessage());
}
}
class Jazz10RequestCallback implements RequestCallback{
public void onError(Request request, Throwable exception) {
// never reach here
Window.alert("Failed to send the message: "
+ exception.getMessage());
}
public void onResponseReceived(Request request, Response response) {
// render output
Window.alert(response.getText());
}
}
}
然而警报总是来自onResponseReceived和显示没什么(empty string我想)
我可以到达我python服务器好了,下载java,通过浏览器。但我看不到任何请求打击的服务器应用程序.
我们确保,"继承name='com.谷歌。应用程序.http。HTTP"是的gwt.xml 文件
问题是:
1)是相同的网站政策限制在在这里工作?我希望例外(因而失败的消息),但它并没有发生
2)如果它确实是同一个站点的政策问题,什么是最简单的方式来部署的应用程序的脚本python后台?日食应用程序的插件产生了一些伪在战争子目录。它是足够的复制这些文件的某些静态目录我的蟒蛇的后台?
解决方案
1)是的它是,虽然主是相同的,你想要访问一个不同港口-SOP不允许的。你可能得到JavaScript例外检查萤火虫的控制台上或者类似的东西。
2)按照 指南 在正式文档。你不需要一个Java服务器的-只是一个,可以为HTTP内容(例如,Apache是优良)。我没有经验Python作为后端,但我敢肯定有一个解决方案Python服务和HTTP。
当使用的-noserver标志,你的 外部服务器被使用的应用程序 主办方式浏览器来提供这两个 你的动态内容,并且所有静态的 内容(如应用程序的应用程序 主页上,其他HTML文件、图片, CSS,等等。)
动态的内容,在这种情况下,将Python脚本。
其他提示
是的,这将失败由于SOP。你什么HTTP响应代码?通常在这种情况下回来为0,而不是200(OK)。一个解决方案可能是使用JSONP的方法,我写了一点关于JSONP与GWT作为本文的第二部分:的 http://www.bristol-gtug.org/?p=76
这可能为时已晚。如果您没有访问使用相对路径和这样的本地资源,你是正确的,它受到SOP(同源策略)。通过-no服务器标志将不会是太大的帮助来解决这个问题。为了绕过这个问题,请阅读 HTTP: //code.google.com/p/google-web-toolkit-doc-1-5/wiki/FAQ_JSONFeedsFromOtherDomain 。一个更好的解决办法是使用com.google.gwt.jsonp.client.JsonpRequestBuilder,(记得要继承继承名=“com.google.gwt.jsonp.Jsonp” \),这是由GDATA API使用(“更好“在这个意义上,你不必自己编写)。希望这可以帮助。干杯〜