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('系统错误~') } }); }); });