jsonp java后台_java后台jsonp解决跨域问题

2015-09-09 10:49:03

在进行web前端开发过程中,有时候会遇到调用的接口和前端文件不在一个域名之下,出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即“同源策略”。而跨域就是通过某些手段来绕过同源策略限制,实现不同服务器之间通信的效果。这样就产生了跨域的问题。下面我来介绍一种通过jsonp实现的ajax解决跨域问题,后台例子程序为java。

先看一下前台的ajax程序代码

function login(){

var name=$("#na").val();

var psd = $("#pa").val();

$.ajax({

url: 'Choice/user_login.java?name='+name+'&&password='+psd,

type: "get",

dataType:'jsonp',

jsonp: "callback",

jsonpCallback:"success_jsonpCallback",

success: function(data) {

alert(data.result);

if(data.result!=0){

alert("登陆成功");

}else{

alert("登录失败");

}

}

});

}

jsonp只能采用get方式来传输数据,在来看一下java程序的代码

public void login(){

Gson gson = new Gson();

System.out.println("============login");

try{

String na =new String(name.getBytes("iso8859-1"), "UTF-8");

System.out.println(name+"=====登录");

String data_stroage = gson.toJson(userManager.findUserByName(na,password));

HttpServletRequest request = ServletActionContext.getRequest();

String callback = request.getParameter("callback");

String jsoncallback = callback + "({'result':"+data_stroage+"})";

HttpServletResponse response = ServletActionContext.getResponse();

response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

PrintWriter out = response.getWriter();

out.print(jsoncallback);

out.flush();

out.close();

}catch(Exception e){

e.printStackTrace();

}

}

由于get方式传输中文会产生乱码问题,故在上面的代码进行了编码格式转换

下面来看一下中间的数据传输,下图分别为后台返回的数据和前台传输的数据。

e6ff29ce4ce2010de2bbd5e2a440285c.png

18ebebaa80e3d60c748466b03cdc1aed.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值