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

 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 @   _情书  阅读(1216)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示