什么是跨域?
当A向B发起一个请求时,A和B之间,ip,端口,请求协议这三者只要有一个不同,那么就是跨域。一般情况下跨域是无法正常访问的。那么有时候就是想要跨域,那么怎么办呢?
解决方案
- 使用JSONP(此处不具体说明)
- 使用过滤器,在返回的http中加上一个header,具体如下:
package com.webside.shiro.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Created by Administrator on 2016/5/16.
*/
public class AccessFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse)servletResponse;
response.addHeader("Access-Control-Allow-Origin","*");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
上面代码中的*表示允许所有的目标来跨域访问。我们也可以用一个具体的域名来代替它,表示只有这个域名下的请求才允许跨域、
提示:记得在web.xml中配置这个filter