解决跨域问题

1.方法一:设置请求头

创建a工程并编写servlet

 //解决跨域问题
        //方法一:添加请求头
        // 接收数据
        String username=req.getParameter("username");
        System.out.println("接收的数据:"+username);

        //响应数据
        resp.getWriter().write("success~");
        //设置请求头
        resp.setHeader("Access-Control-Allow-Origin", "*");

创建b工程编写一个jsp页面并请求a工程中的servlet

$(function () {
            $("#button").click(function () {
                //获取到文本框的值
                var username=$("#username").val();
               //发送ajax请求a工程
                $.ajax({
                    url:"http://www.a.com:8080/a/AServlet",
                    data:{"username":username},
                    type:"POST",
                    success:function (result) {
                        alert(result);
                    },
                    error:function () {
                        alert("系统错误");
                    }
                })
            })
        })

2.方法二:使用JSONP方式解决跨越问题

在a工程中的servlet编写如下

 //方法二:使用JSONP解决跨域问题
        String username=req.getParameter("username");
        System.out.println("接收的数据:"+username);


        //接收ajax传递的数据
        String jsonpcallback = req.getParameter("jsonpcallback");
        System.out.println(jsonpcallback);
        //响应数据
        String success = JSON.toJSONString("success~");

        //2.响应结果
        resp.getWriter().write(jsonpcallback+"("+success+")");

在b工程中的jsp页面中编写如下

$(function () {
            $("#button").click(function () {
                //获取到文本框的值
                var username=$("#username").val();
                // //发送ajax请求a工程
                $.ajax({
                    url:"http://www.a.com:8080/a/AServlet?username="+username,
                    type:"GET",
                    jsonp:"jsonpcallback",  //jsonp回调函数
                    dataType:"JSONP",
                    success:function (result) {
                        alert(result);
                    },
                    error:function () {
                        alert("系统错误");
                    }

                })
            })
        })

3.方法三:使用HttpClient解决跨域问题

在a工程中的servlet编写如下

 // 接收数据
        String username=req.getParameter("username");
        System.out.println("接收的数据:"+username);

        //响应数据
        resp.getWriter().write("success~");

在b工程中的jsp页面中编写如下

 $(function(){
            $("#button").click(function () {
                //获取到文本框的值
                var username=$("#username").val();
                //发送Ajax请求www.a.com的A工程
                $.ajax({
                    url:"BServlet?username="+username,
                    type:"GET",
                    success:function (result) {
                        alert(result);
                    },
                    error:function () {
                        alert('系统错误~')
                    }
                });
            });
        });

  

原文地址:https://www.cnblogs.com/szhhhh/p/12269271.html