SMS系统开发总结(五)CORS跨域多域名

前言

一开始做跨域请求的时候Access-Control-Allow-Origin都设置为了*也就是通配符,但是这样的做法不够安全,还是限制一下域名比较靠谱,于是问题就来了,Access-Control-Allow-Origin字段只支持单域名/通配符,那如果需要多个域名该怎么办呢?对不同的路径要设置不同的跨域要求时怎么办呢?这时候就需要服务端来进行一些处理了。

解决

在ajax请求时,在HTTP request Header里面会有一个字段origin,这里面存储了客户端的域名。直接放源码吧,通过继承ContainerResponseFilter来实现对所有回复的过滤。

1.首先我们获取请求的路径,以做到对不同路径的处理。

2.获取origin,并与服务端的origin list进行对比进行特殊的处理。

问题

其实这种做法还是有一定的问题的,毕竟HTTP的Header是可以伪造的。防君子不防小人。如果有更好的解决方案的话,欢迎交流学习哦。

打赏