gpt4 book ai didi

gwt - 在端口 80 上链接 apache web 服务器,在端口 8080 上链接 tomcat webapp

转载 作者:行者123 更新时间:2023-11-28 22:05:45 26 4
gpt4 key购买 nike

在端口 80 上,我有普通的 apache 网络服务器。

在端口 8080 上,我有带有客户端和服务器端内容的 tomcat。

我的目标是:

www.mydomain.com 在加载 javascript 内容时呈现静态和 SEO 友好的 index.html。

在这个 index.html 的标题中,我加载了 www.mydomain.com:8080/myapp/stuff.js

stuff.js 使用 gwt 编译并调用 RootLayoutPanel.get().add(nice_panel) 将删除静态内容并显示动态小部件。它还调用 servlet(服务器端代码)。

问题:出于安全原因,浏览器不允许我加载 www.mydomain.com:8080/myapp/stuff.js,因为它在不同的端口上。

错误尝试:我试图创建一个从“普通”apache web 服务器目录到包含 stuff.js 的 tomcat webapp 的符号链接(symbolic link)。我现在可以加载 stuff.js,因为它的 URL 是:www.mydomain.com/mysymlink_to_tomcat/stuff.js。但是由于浏览器安全规则(“XMLHttpRequest 无法加载...源...Access-Control-Allow-Origin 不允许”),stuff.js 无法再在服务器端再次调用 servlet。

我想避免使用 header('location: http://mydomain.com:8080/another_index_on_tomcat.html ') 从 index.html 重定向到 tomcat 的“疯狂”解决方案。这个解决方案有效,但它有很多缺点(SEO...)

什么是最好的方法?

谢谢。

最佳答案

你基本上有两个解决方案:

  • 让它与 2 个来源一起工作:使用 GWT 中的 xsiframe 链接器以允许 :80 上的页面从 加载脚本: 8080(对于读者:这与加载无关,与脚本的作用有关)。将以下内容添加到您的`gwt.xml:

    <add-linker name='xsiframe' />

    不幸的是,这无法解决您的 GWT-RPC 问题(无论您使用什么与服务器通信)。为此,有 CORS .

  • 使用单一来源:使用 Apache 的 mod_proxy(或 mod_jk)通过 Apache 代理您的 Tomcat。没有人会使用 :8080,一切都会通过 :80。请参阅 将 Tomcat 与 Apache HTTPD 和代理一起使用 https://developers.google.com/web-toolkit/doc/latest/DevGuideServerCommunication#DevGuideRPCDeployment

当然还有放弃 HTTPD 并使用 Tomcat 提供所有服务的解决方案(最近的 Java 和 Tomcat 版本已经解决了它们的缓慢问题)。

关于gwt - 在端口 80 上链接 apache web 服务器,在端口 8080 上链接 tomcat webapp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13021241/

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