无法从Spring Boot可执行jar访问部署在其他服务器上的休息点

时间:2019-06-05 11:44:30

标签: java spring spring-boot angular7 executable-jar

我让Angular应用程序本地运行在localhost:4200上,并访问部署在https://abc.xyz:20000上的其余点。

我已将此条目放在proxy.conf.json中,并将package.json中的npm start命令更新为

"start": "ng serve --proxy-config proxy.conf.json"

本地角度应用程序工作正常。

我已使用Spring Boot将angular应用程序打包为可执行jar。

现在,我有了可执行的jar名称hello-world.jar。 它在位于本地主机:8080的spring boot嵌入式tomcat服务器上启动。

java -jar hello-world.jar

在点击https://abc.xyz:20000上托管的休息点时,chorme开发人员网络选项卡出现404错误。

这是由于jar不了解代理配置。

我应该如何使用npm start角度知道的代理配置来配置jar。

我已经尝试过此解决方案,但这对我不起作用。

Specifying an http proxy with spring-boot

1 个答案:

答案 0 :(得分:0)

经过太多的努力,我能够找到解决方案。由于CORS问题,我无法使用其余的服务。

我在Spring Boot和JAX-RS中都找到了针对其余服务的解决方案。

Spring Boot中的其他服务: 在Controller中:配置CORS

@CrossOrigin(value='*', maxAge='3600')
@RestController

JAX-RS中的其他服务 添加过滤器,即CORSFilter.java

package com.learn.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

    public class CORSFilter implements Filter  {

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;

        // Authorize (allow) all domains to consume the content
        ((HttpServletResponse) servletResponse).addHeader("Access-Control-Allow-Origin", "*");
        ((HttpServletResponse) servletResponse).addHeader("Access-Control-Allow-Headers", "*");
        ((HttpServletResponse) servletResponse).addHeader("Access-Control-Allow-Methods","GET, OPTIONS, HEAD, PUT, POST");


        // pass the request along the filter chain
        chain.doFilter(request, servletResponse);

    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub  
    }
}

web.xml

中添加条目
<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>com.learn.filter.CORSFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>