后端增加配置类解决跨域问题

 1,第一种方式   过滤器


package com.skynet.wechat.wechat.common;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.skynet.util.StringUtil;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.skynet.wechat.api.common.SysConfig;
import com.skynet.wechat.api.model.UserModel;
import com.skynet.wechat.wechat.service.IServiceReqLogService;
/**
*
* <p>Title: </p>
* <p>Description: 公共过滤器,处理跨域和日志记录</p>
*
* @author Torlay
* @version 1.00.00
* <pre>
* 修改记录:
* 版本号 修改人 修改日期 修改内容
*
*
*/


@Service("commonFilter")
public class CommonFilter implements Filter{
protected transient Logger logger = Logger.getLogger(this.getClass().getName());

@Autowired
private IServiceReqLogService serviceReqLogService;

@Override
public void destroy() {
// TODO Auto-generated method stub

}

@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
//增加跨域处理
HttpServletResponse resp = (HttpServletResponse) response;
resp.setHeader("Access-Control-Allow-Origin", "*");
//拦截请求日志
HttpServletRequest req = (HttpServletRequest) request;
logger.debug("11111>>>>========拦截请求日志=============>>>>>>>>"+request);
if(req != null ){
/*请求日志记录*/
serviceReqLogService.outTransactioninsert(req);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
chain.doFilter(request, response);
}

}

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

}

}
 

 2,第二种方式

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("*")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }

}

 3. 过滤器配置

public class CrossDomainFilter implements Filter {

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

    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        
        String jsonCallback = ((HttpServletRequest) req).getParameter("jsonpCallback");
        if (jsonCallback != null) {
            HttpServletResponse response = (HttpServletResponse) res;
            OutputStream os = response.getOutputStream();
            os.write((jsonCallback + "(").getBytes());
            chain.doFilter(req, res);
            os.write(")".getBytes());
        } else {
            chain.doFilter(req, res);
        }
        
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

}

 

posted @ 2020-03-30 16:20  _情书  阅读(1213)  评论(0编辑  收藏  举报