跨域问题解决方案?

什么是跨域

在当前域名请求网站中,默认不允许通过ajax请求发送起其他域名。

解决方案

(一)使用后台response添加header     


后台response添加header,response.setHeader("Access-Control-Allow-Origin", "*"); 支持所有网站


(二)使用jsonp(只支持get请求,不支持get请求)

前端代码:

$.ajax({

type : "POST",

async : false,

url : "http://a.a.com/a/FromUserServlet?userName=张三",

dataType : "jsonp",//数据类型为jsonp  

jsonp : "jsonpCallback",//服务端用于接收callback调用的function名的参数  

success : function(data) {

alert(data.result);

},

error : function() {

alert('fail');

}

});

后端代码


@WebServlet("/FromUserServlet")

public class FromUserServlet extends HttpServlet {

 

@Override

protected void doGet(HttpServletRequestreq, HttpServletResponseresp) throws ServletException, IOException {

doPost(req,resp);

}

 

@Override

protected void doPost(HttpServletRequestreq, HttpServletResponseresp) throws ServletException, IOException {

resp.setCharacterEncoding("UTF-8");

// resp.setHeader("Access-Control-Allow-Origin", "*");

 String userName =req.getParameter("userName");

 String userAge =req.getParameter("userAge");

 System.out.println(userName +"----" + userAge+"---"+req.getMethod());

// JSONObject JSONObject1 = new JSONObject();

// JSONObject1.put("success", "添加成功!");

// resp.getWriter().write("callbackparam(" + JSONObject1.toJSONString()

// + ")");

 

try {

resp.setContentType("text/plain");

resp.setHeader("Pragma","No-cache");

resp.setHeader("Cache-Control","no-cache");

resp.setDateHeader("Expires", 0);

PrintWriter out =resp.getWriter();

JSONObject resultJSON =new JSONObject();// 根据需要拼装json

resultJSON.put("result","content");

String jsonpCallback =req.getParameter("jsonpCallback");//客户端请求参数

out.println(jsonpCallback +"(" + resultJSON.toJSONString() +")");//返回jsonp格式数据

out.flush();

out.close();

} catch (Exceptione) {

// TODO: handle exception

}

}

}

(三)使用HttpClinet内部转发

(四)使用接口网关(使用nginx转发、使用springCloud网关)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值