AJAX跨域访问(get、post请求)

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>

猜你喜欢

转载自blog.csdn.net/weixin_39793123/article/details/83016554