通过Filter解决跨域问题,可以跨多个域,域可以通过@Value注解取

本文介绍了如何在Spring Security项目中通过Filter和@Value注解解决跨域问题,允许从properties文件中读取多个信任的源。在配置文件中定义Access-Control-Allow-Origin,然后使用@Value注解获取域名数组。当遇到@Value无法取值时,可能的原因包括资源文件结构、属性命名、静态属性等。通过自定义Filter设置响应头的'Access-Control-Allow-Origin',但这种方式仅限于单个域。要跨多个域,需要检查请求头的'Origin'属性并与信任的域名数组进行比较。在Spring Security环境中,确保自定义的跨域Filter优先级高于Spring Security的过滤器。
摘要由CSDN通过智能技术生成

跨域中不同的域指的是“协议+IP+端口”,只要其中一个不相同就要跨域访问,为了安全,浏览器对于跨域默认是禁止访问的。现在很多应用的客户端和服务端是分开的,那么如何来让处于不同域的客户端和服务端实现跨域访问呢,而且客户端还可能不止一个,那么又如何实现多客户端跨域访问一个服务端呢?

本文的项目默认使用Maven构建,并使用Spring Security实现安全,首先在src/main/resources目录建properties文件,在配置文件中输入Access-Control-Allow-Origin=http://192.168.1.1,http://192.168.1.2,http://192.168.1.3,代表客户端的三个域。(站点必须带"http://"还有端口号,这里使用默认端口号80,因此可以省略)

1、通过@Value注解从properties文件取字符串数组

建一个类,并使用@Component注解标注类,属性适用@Value注解,注意引用org.springframework.beans包。

@Component
public class MyFilter {

	@Value("${Access-Control-Allow-Origin:}")// 这里的冒号加与不加感觉没区别
	String[] originProperties; // 这里竟然可以直接以数组接收以逗号分隔的多个属性

}

这样就可以直接得到客户端来源域的数组。

有的时候@Value取不到值

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值