Angular + Spring Boot跨域过滤器不起作用
创始人
2024-10-14 13:00:40
0

在使用Angular和Spring Boot进行开发时,由于浏览器的同源策略限制,可能会遇到跨域问题。

解决这个问题的方法之一是在Spring Boot中添加一个跨域过滤器。

首先,创建一个名为CorsFilter的过滤器类,继承自OncePerRequestFilter:

import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CorsFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
            throws ServletException, IOException {
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
        response.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type");
        response.setHeader("Access-Control-Max-Age", "3600");

        if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
            response.setStatus(HttpServletResponse.SC_OK);
        } else {
            filterChain.doFilter(request, response);
        }
    }
}

然后,在Spring Boot的主类中添加@ServletComponentScan注解,以便识别并注册过滤器:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

最后,在Angular的服务端口上添加代理配置,将请求代理到Spring Boot的端口。在proxy.conf.json文件中添加以下内容:

{
  "/api/*": {
    "target": "http://localhost:8080",
    "secure": false,
    "logLevel": "debug"
  }
}

然后,在package.json文件中的scripts中添加以下内容:

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

重新启动Angular应用程序,跨域请求应该会成功。请确保将http://localhost:4200(Angular的默认开发端口)添加到Angular应用程序的跨域白名单中。

这样,Angular和Spring Boot的跨域过滤器就会起作用了。

相关内容

热门资讯

玩家必看!wepoker私人局... 玩家必看!wepoker私人局外卦,wepoker怎么设置透视,可靠技巧(有挂攻略)是一款可以让一直...
实测发现!wepoker免费透... 实测发现!wepoker免费透视,pokemomo辅助软件,攻略教程(有挂软件)1、点击下载安装,微...
让我来分享经验!wepoker... 让我来分享经验!wepoker智能辅助插件,wepoker辅助透视,曝光教程(有挂方法);《WPK辅...
科普!aapoker插件,we... 科普!aapoker插件,wepoker辅助软件视频,安装教程(有挂透明);支持多人共享记分板与复盘...
必知教程!wepoker好友助... 必知教程!wepoker好友助力码,aapoker透视怎么用,AA德州教程(有挂技巧)准备好在aap...
技术分享!德州透视hhpoke... 技术分享!德州透视hhpoker,拱趴大菠萝十三水作弊,黑科技教程(有挂透明);最新版2024是一款...
科技介绍!wepoker黑侠辅... 1、科技介绍!wepoker黑侠辅助器,wepoker有辅助器吗,解密教程(有挂技巧)2、进入游戏-...
总算了解!aapoker插件,... 1、总算了解!aapoker插件,德扑圈透视挂,安装教程(有挂透视)2、进入游戏-大厅左侧-新手福利...
实测教程!hhpoker软件安... 实测教程!hhpoker软件安装包,wepoker软件安装包,德州论坛(有挂技巧);实战中需综合运用...
一分钟了解!pokemmo手机... 一分钟了解!pokemmo手机脚本辅助器,pokerworld破解版下载,教你攻略(有挂软件);实战...