使用微信接口时,遇到前端请求跨域问题,不用修改tomcat conf,配置过滤器即可。
过滤器
package me.ele.mercuris.svr.web.framework;
import com.google.gson.Gson;
//import me.ele.mercuris.coffee.dto.KarmaUser;
import me.ele.mercuris.common.exception.SystemException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class WebAPISecurityFilter implements Filter {
final static Logger logger = LoggerFactory.getLogger(WebAPISecurityFilter.class);
private WebAPISecurityProtocol securityProtocol = new WebAPISecurityProtocol();
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
corsResponse(httpResponse);
chain.doFilter(request, response);
}
/**
* Cross-origin resource sharing (CORS)
*
* @param response
*/
private void corsResponse(HttpServletResponse response) {
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", WebAPISecurityProtocol.CUSTOM_HEADERS);
}
@Override
public void destroy() {
}
}
context-svr.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 这是一个基础的Filter但依赖于基础认证 -->
<bean id="webapi_security" class="me.ele.mercuris.svr.web.framework.WebAPISecurityFilter">
</bean>
</beans>
在web.xml中添加
<filter>
<filter-name>webapi_security</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>webapi_security</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>