Springboot项目部署到金蝶Apusic应用服务器上,前端访问接口提示net::ERR_EMPTY_RESPONSE
标签: 金蝶中间件 java spring boot
先描述一下我们项目的情况
项目是前后端分离项目,后端是Springboot应用,公司要求不用Springboot内置的web容器Tomcat,需要使用中国自主研发的金蝶天燕中间价产品:Apusic应用服务器,首先呢对后台项目改造,改造可以参考:https://blog.csdn.net/weixin_41968788/article/details/108882197?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
发现问题
改造完后,把项目打成war包,然后部署到金蝶的Apusic应用服务器上,启动成功,然后我用postman对接口进行测试访问,一切正常,访问的很愉快,接口正常。最后我想着前后端联合起来测试一下,在页面上点点看看是不是正常的,这样一搞问题就出来了,在页面上访问接口相应Status为:net::ERR_EMPTY_RESPONSE,如下图

按照字面的意思应该是错误空响应,我一开始也是一脸懵逼,明明接口都是有响应的,而且我用postman访问接口非常的愉快的,正常的,为什么到这里就不行了,纳闷
提示:
在项目打包部署到金蝶应用服务器的时候,可能会报各种错,毕竟web服务器换了,和Tomcat有不一样的地方,这里只能按照具体的任务具体解决,像我的项目就出现了一个事务的问题,还有一个定时任务的问题
问题分析
这postman可以访问接口,在网页就不行,首先服务启动是没有问题的,后来走了挺多弯路的,猜可能是跨域的问题,但是项目明明有配置跨域的,,,,,然后我去找了金蝶的技术支持人,他把Apusic应用服务器上的跨域配置发给我了,按照这个配置一下,果然问题就解决了,哈哈哈哈,
这里我吐槽一下,对应这种产国化应用服务器,应用的不是很广泛,而且也没有什么社区,在网上搜到的资料不多,遇到问题最好就是找到官方人员解决一下
跨域配置如下:
主要修改如下
1、 修改domains/mydomain/config/vm.options 取消一部分访问限制
apusic.http.disabledMethods=
2、 配置conf/web.xml 添加跨域filter配置
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.apusic.util.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,PUT, DELETE,OPTIONS</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Accept,Origin,X-Requested-With,tokenId,Content-Type,Last-Modified,lang,entCode,x-form-id</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Set-Cookie</param-value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
测试是否解决跨域问题,如果未解决,去掉第二部修改的配置参考第三步
3、应用添加跨域过滤器,添加到@Configuration注解的配置类中 如果不是springboot项目,百度所有相关的配置加入跨域过滤器配置
import org.springframework.web.filter.CorsFilter;
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("");
corsConfiguration.addAllowedHeader("");
corsConfiguration.addAllowedMethod("*");
source.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(source);
}
到这里问题就解决了,搞了我两天,哎,记录一下,希望可以帮助有需要的人
智能推荐
ApplicationContextAware如何装配applicationcontext
首先看通过实现ApplicationContextAware接口获得applicationcontext的方法: 要知道ApplicationContextAware首先要了解ApplicationContextAwareProcessor ApplicationContextAwareProcessor继承了BeanPostProcessor,即在bean实例化的时候会调用postProcess...
[BZOJ1013][JSOI2008]球形空间产生器sphere(高斯消元)
题目: 我是超链接 题解: 根据题目给出的信息,我们列柿子 (a1−x)2+(b1−y)2=r2(a1−x)2+(b1−y)2=r2 (a2−x)2+(b2−y)2=r2(a2−x)2+(b2−y)2=r2 (a3−x)2+(b3−y)2=r2(a3−x)2+(b3&...
【opencv学习之三十六】轮廓特征应用:计算点与轮廓距离
opencv实现了Contours与point的距离关系的计算使用起来很方便,不用自己再进行坐标转换计算了;示例代码如下: 效果如下:...
实验六:MPG音频编码
一、实验原理 音频压缩编码的本质是感知编码,利用感知模型去除不敏感的声音数据,同时保证声音质量不会有明显下降。它采用子带编码技术,根据心理声学模型获得不同子带的听觉掩蔽阈值,并对每个子带的取样值进行动态量化。 1、音频压缩的可能性 (1)声音信号中的“冗余”信息: 频域:非均匀功率密度谱, 低频能量高,高频能量低。 时域:信息冗余度主要表现在幅度非均匀分布,即不同幅度的样值...
隐式 Style–CSS 在反爬虫中的应用
文章作者:「夜幕团队 NightTeam」 - 戴煌金 润色、校对:「夜幕团队 NightTeam」 - Loco 什么是隐式 Style–CSS 先来唠唠什么是 隐式 Style–CSS: CSS中,::before 创建一个伪元素,其将成为匹配选中的元素的第一个子元素。常通过 content 属性来为一个元素添加修饰性的内容。 引用自:https://developer...
猜你喜欢
Cosmos(ZYNQ)编译运行Linux系统
Author:Gary Data:2019-12-24 Ref: ug1144-petalinux-tools-reference-guide.pdf https://www.cnblogs.com/vacajk/p/6146146.html https://www.cnblogs.com/likaiwei/p/10223354.html https://blog.csdn.net/mcupro/...
(93)Part23-Nuxt.js服务器端渲染-06【作业】-上传到码云
一、创建代码仓库 1、新建仓库 2、得到代码仓库的地址 二、VSCode连接gitee 1、打开项目 使用VSCode打开项目文件夹 guli-site 2、初始化存储库 3、加入本地代码仓库 4、提交代码 5、推送到远程仓库 Ctrl+Shift+~,进入到VSCode终端,在guli-site文件夹内执行下面的命令...
Dockerfile 制作cnetos的镜像
Dockerfile 制作cnetos的镜像 dockerfile 的常用命令 通过dockerfile创建一个自己的centos镜像 步骤1、编写dockerfile文件 步骤2、通过dokcerfile文件构建镜像 步骤3、测试构建是否成功 成功构建!!! 4、可以通过docker history命令来查看镜像的历史,也可以查看官方的!...
GTSAM:使用gtsam的C++
GTSAM 是一个在机器人领域和计算机视觉领域用于平滑(smoothing)和建图(mapping)的C++库。它与g2og2o不同的是,g2og2o采用稀疏矩阵的方式求解一个非线性优化问题,而GTSAM是采用因子图(factor graphs)和贝叶斯网络(Bayes networks)的方式最大化后验概率。 相关内容 1)gtsam解析 by 董靖: https://www.bilibili....
