以前一直有个错误的理解,若是A服务器中有个ajax请求访问B服务器,是A服务器出于安全考虑,不让访问B服务器,真实状况是该ajax请求已经发送给B服务器了,B服务器出于安全考虑,没有给A服务器的ajax请求以返回。html
这种状况,能够在B服务器中添加过滤器来解决,具体代码以下。java
public class AccessControlFilter implements Filter { private final static Logger logger = LoggerFactory .getLogger(AccessControlFilter.class); public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); String requestUri = request.getRequestURI(); logger.info("AccessControlFilter.doFilter requestUri=[" + requestUri + "]"); System.out.println("AccessControlFilter.doFilter requestUri=[" + requestUri + "]"); System.out.println("AccessControlFilter.doFilter requestUri=[" + requestUri + "] 进行跨域处理。"); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET"); response.setHeader("Access-Control-Max-Age", "6000"); response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); chain.doFilter(req, res); } public void init(FilterConfig filterConfig) { } public void destroy() { } }
可是这种处理方式也有弊端,B服务器的安全性大大下降。ajax