java解决跨域问题
1.編寫Filter類
package com.skynet.oilmap.system;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SimpleCORSFilter implements Filter{
? ??
? ? public final static Logger LOGGER = LoggerFactory.getLogger(SimpleCORSFilter.class);
? ??
? ? private boolean isCross = false;
? ? @Override
? ? public void destroy() {
? ? ? ? isCross = false;
? ? }
? ? @Override
? ? public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
? ? ? ? try {
? ? ? ? ? ? if (isCross) {
? ? ? ? ? ? ? ? HttpServletRequest httpServletRequest = (HttpServletRequest) request;
? ? ? ? ? ? ? ? HttpServletResponse httpServletResponse = (HttpServletResponse) response;
? ? ? ? ? ? ? ? LOGGER.debug("跨域攔截請(qǐng)求: " + 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);
? ? ? ? }catch (Exception e) {
? ? ? ? ? ? LOGGER.debug("攔截請(qǐng)求,判斷是否跨域異常", e);
? ? ? ? }
? ? ? ??
? ? }
? ? @Override
? ? public void init(FilterConfig filterConfig) throws ServletException {
? ? ? ? String isCrossStr = filterConfig.getInitParameter("IsCross");
? ? ? ? isCross = isCrossStr.equals("true") ? true : false;
? ? }
}
?
2.在web.xml中配置該Filter
?? ?<!-- 跨域請(qǐng)求 -->
?? ?<filter>
?? ??? ?<filter-name>SimpleCORSFilter</filter-name>
?? ??? ?<filter-class>com.skynet.oilmap.system.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>
?
配置結(jié)束即可解決跨域問題。
總結(jié)
以上是生活随笔為你收集整理的java解决跨域问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java面试开发过程中用到的问题
- 下一篇: mysql合并表中的数据