【问题标题】:running GWT application from remote machine从远程机器运行 GWT 应用程序
【发布时间】:2011-06-22 20:03:13
【问题描述】:

我正在开发一些 GWT 应用程序,一些第三方需要将其导入到他自己的网站中。

我正在开发的应用程序包含在我的机器上,它说: http://myMachine.com/app/gwtApp.html

应用程序看起来像:

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<link type="text/css" rel="stylesheet" href="http://myMachine.com:8888/app/gwtApp.css">
<title>gwtApp</title>
<script language="javascript" src="http://myMachine.com:8888/app/gwtApp/gwtApp.nocache.js"></script>
</head>
<body>
<div id="app" style="width:240px; height:190px;"></div>
</body>
</html>

注意:我编写了一些代理 servlet 只是为了解析我的服务器的 url,因为您知道上面的脚本标记默认如下所示: &lt;script language="javascript" src="app/gwtApp/gwtApp.nocache.js"&gt;&lt;/script&gt;,但我的代理将其转换为: &lt;script language="javascript" src="http://myMachine.com/app/gwtApp/gwtApp.nocache.js"&gt;&lt;/script&gt;

第三方使用某种导入机制(jstl 导入或其他)只是将上述内容导入他们的网站(在完全不同的域上)

问题是,他们收到以下 JS 错误,但应用程序没有呈现任何内容:

Error: Permission denied for <http://172.16.0.87:8888> to get property Window.document from <http://thrid-party_domain.com>.
Source File: http://myMachine.com/app/gwtApp/37A4800286E685E7555FF8DCA66FC4F9.cache.html
Line: 1

Error: Permission denied for <http://myDomain:8888> to get property Window.gwtApp from <http://thrid-party_domain.com>.
Source File: http://myMachine.com/app/gwtApp/37A4800286E685E7555FF8DCA66FC4F9.cache.html
Line: 1463

【问题讨论】:

    标签: javascript gwt xss same-origin-policy cross-site


    【解决方案1】:

    看起来问题与same origin policy 规则有关。您的 css 和 javascript 文件已从不同的端口发布:8888 和 80。如果您将 css 文件的端口更改为 80,我相信您不会得到以前的错误..

    【讨论】:

    • 实际上,在我添加到 .gwt.xml 文件后,上述错误消失了:&lt;add-linker name="xs"/&gt; 如您的链接所述.. 但我仍然无法在客户(第三方)中呈现应用程序页面...错误控制台统计没有错误或警告,有什么帮助吗?
    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多