错误类容:
\"跨域问题\"
在实现不同端口号之间访问时遇到了跨域报错问题

跨域的目标服务器要返回一系列的Headers,通过这些Headers来控制是否同意跨域。
Access-Control-Allow-Origin 这个 Header, 他是W3C标准里用来检查该跨域请求是否可以被通过。 (Access Control Check)

- 解决办法1:在java服务器端的servlet里面添加

response.setHeader(\"Access-Control-Allow-Origin\", \"*\"); 

- 解决办法2:在后端实现过滤器来改写请求头

import java.io.IOException;
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;
/**
 * 过滤器
 * @author Administrator
 */
public class Filter implements javax.servlet.Filter{
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub	
	}
	@Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        HttpServletRequest request = (HttpServletRequest)servletRequest;
 
        String origin = request.getHeader(\"Origin\");
        response.setHeader(\"Access-Control-Allow-Origin\", origin);
        response.setHeader(\"Access-Control-Allow-Methods\", \"POST, GET, OPTIONS, DELETE\");
        response.setHeader(\"Access-Control-Max-Age\", \"3600\");
        response.setHeader(\"Access-Control-Allow-Headers\", \"x-requested-with,Authorization\");
        response.setHeader(\"Access-Control-Allow-Credentials\", \"true\");
        String method = request.getMethod();
        if(method.equalsIgnoreCase(\"OPTIONS\")){
            servletResponse.getOutputStream().write(\"Success\".getBytes(\"utf-8\"));
        }else{
            filterChain.doFilter(servletRequest, servletResponse);
        }
    }
	@Override
	public void destroy() {
		// TODO Auto-generated method stub		
	}
}

并在web. 文件中引用

<filter>
    <filter-name>Filter</filter-name>
    <filter-class>xxx.xxx.Filter</filter-class>
</filter>
<filter-mapping>
    <filter-name>Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
收藏 打印