java的 SSM跨域问题解决办法

首先,你要知道什么是跨域
那么什么是跨域呢?
跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。
跨域的严格一点的定义是:只要 协议,域名,端口有任何一个的不同,就被当作是跨域

哔哔半天,看重点!!
配置允许跨域,全是后台的问题,跟前端无关。咱就三步就完事

  1. 定义一个类,实现一个Filter接口(导包导servlet的包)
public class SimpleCORSFilter implements Filter{
	private boolean isCross = false;

    @Override
    public void destroy() {
        isCross = false;
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        if (isCross) {
            HttpServletRequest httpServletRequest = (HttpServletRequest) request;
            HttpServletResponse httpServletResponse = (HttpServletResponse) response;
            System.out.println("拦截请求: " + httpServletRequest.getServletPath());
            httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
            httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
            httpServletResponse.setHeader("Access-Control-Max-Age", "0");
            httpServletResponse.setHeader("Access-Control-Allow-Headers",
                    "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");
            httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");
            httpServletResponse.setHeader("XDomainRequestAllowed", "1");
        }
        chain.doFilter(request, response);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        String isCrossStr = filterConfig.getInitParameter("IsCross");
        isCross = isCrossStr.equals("true") ? true : false;
        System.out.println(isCrossStr);
    }

2.在web.xml中加上跨域的配置请求

<!-- 跨域请求 -->  
  <filter>  
    <filter-name>SimpleCORSFilter</filter-name>  
    <filter-class>com.softeem.ssm.filter.SimpleCORSFilter</filter-class>  
    <init-param>  
        <param-name>IsCross</param-name>  
        <param-value>true</param-value>  
    </init-param>  
</filter>  
<filter-mapping>  
    <filter-name>SimpleCORSFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
</filter-mapping

3.在Springmvc.xml中配置跨域请求

      <!-- 接口跨域配置 -->  
   <mvc:cors>  
       <mvc:mapping path="/**"  
                    allowed-origins="*"  
                    allowed-methods="POST, GET, OPTIONS, DELETE, PUT"  
                    allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"  
                    allow-credentials="true" />  
   </mvc:cors>  

配置完成,前端正常访问就可以了。

                                                                 别人养猪我养露❤
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值