gpt4 book ai didi

tomcat - 在一个 Tomcat 中运行 Grails 和 Sencha ExtJS

转载 作者:行者123 更新时间:2023-11-28 23:26:32 25 4
gpt4 key购买 nike

拥有一个使用 ExtJS 制作的前端运行而后端使用 Grails 构建的应用程序。

ExtJS 应用程序是从 Windows 命令行构建和部署的,使用 sencha app build 然后 sencha web start 在端口 80 上启动应用程序。一切都很好。接下来,Grails 应用程序通过 IntelliJ 运行(Run->Run 'Application'),但它在端口 8080 中运行。

如何从 ExtJS 应用程序调用 Grails 中的服务,因为它依赖于同一端口?有没有办法通过虚拟主机将应用程序部署在一个 Tomcat 实例下?

最佳答案

您可以通过在服务器端和客户端启用 CORS 让您的 ExtJS 调用其他端口。

Grails

要在 grails 端启用 CORS,您可以安装这个 plugin并将以下配置添加到您的 Config.groovy。基本上我们告诉任何域都可以向这个应用程序发出请求。

cors {
enabled = true
url.pattern = '*'
allow.origin.regex = '.*'
headers=[
'Access-Control-Allow-Headers': 'origin, authorization, accept, cookie, set-cookie, content-type, x-requested-with',
'Access-Control-Allow-Methods': 'GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS',
'Access-Control-Max-Age': 3600
]
}

ExtJS

我们还需要在 ExtJS 端启用 CORS,为此我们可以简单地为所有 AJAX 请求添加一个 beforerequest 监听器。此外,我更喜欢有一个可以配置我的 API Url 的公共(public)位置,因此我们可以集中它而不是在代理、ajax 请求等所有地方定义 API URL。

您可以通过在您的应用程序启动方法中添加以下代码来实现。

var API_URL = 'http://localhost:8080/grailsappp'
Ext.Ajax.on({
beforerequest: function(conn, opts){
if(opts.url) {
opts.url = API_URL + opts.url;
}
conn.setCors(true);
}
});

关于tomcat - 在一个 Tomcat 中运行 Grails 和 Sencha ExtJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36430637/

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