1、JSONP实现跨域get请求(无论请求方式是get,post或者是put等别的请求,最终都会被默认以get请求发送)
<script type="text/javascript">
$.ajax({
url:"http://crossdomain.com/services.php",
dataType:'jsonp',
data:'',
jsonp:'callback',
success:function(result) {
for(var i in result) {
alert(i+":"+result[i]);//循环输出a:1,b:2,etc.
}
},
timeout:3000
});
</script>
—类似百度有 相关更具体介绍
2、CORS 请求(可以发送跨域的post、put、get等请求)
在JSP或者Java代码中设置response的响应头
下面是是用过滤器简单的实现跨域请求放行
import java.io.IOException;
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.HttpServletResponse;
public class TestFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse servletResponse,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse)servletResponse;
response.setHeader("Access-Control-Allow-Origin","*");
response.setHeader("Access-Control-Allow-Methods","GET,POST,PUT,OPTIONS");
response.setHeader("Access-Control-Allow-Credentials","true");
chain.doFilter(request, response);
System.out.println(" **********************CROS 执行了 **********************");
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
在web.xml中配置相应的拦截路径
<filter>
<filter-name>webAppW</filter-name>
<filter-class>com.TestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>webAppW</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>