过滤器解决跨域问题

什么是跨域?

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略(所谓同源是指,域名,协议,端口均相同)造成的,是浏览器对JavaScript施加的安全限制。

我们来看一下什么情况属于跨域

请求地址形式结果
study.cn/json/jsonp/jsonp.html
http://study.cn/test/a.html同一域名,不同文件夹成功
http://study.cn/json/jsonp/jsonp.html同一域名,统一文件夹成功
http://a.study.cn/json/jsonp/jsonp.html不同域名,文件路径相同失败
http://study.cn:8080/json/jsonp/jsonp.html同一域名,不同端口失败
https://study.cn/json/jsonp/jsonp.html同一域名,不同协议失败

解决跨域的方式有很多 例如JSONP 等等,今天我们说一下配置过滤器的方式解决跨域问题

public class SimpleCORSFilter implements Filter  {
    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
                         FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers"," Origin, X-Requested-With, Content-Type, Accept");

        chain.doFilter(req, response);
    }

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

    }
}
	<filter>
		<filter-name>cors</filter-name>
		<filter-class>com.ys.portal.web.filter.SimpleCORSFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>cors</filter-name>
		<url-pattern>/portal/api/*</url-pattern>
		<url-pattern>/website/tools/fileUpload/*</url-pattern>
	</filter-mapping>

然后只需要在我们的web.xml 中配置一下 跨域过滤器就可以解决跨域问题了,是不是很方便呢~~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值