前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java后台jsonp解决跨域问题

java后台jsonp解决跨域问题

作者头像
OECOM
发布2020-07-01 17:33:20
4380
发布2020-07-01 17:33:20
举报
文章被收录于专栏:OECOMOECOM

2015-09-09 02:49:03

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

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

代码语言:javascript
复制
function login(){
  	 		var name=$("#na").val();
  	 		var psd = $("#pa").val();
  	 		$.ajax({ 
				url: '<%=basePath%>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程序的代码

代码语言:javascript
复制
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方式传输中文会产生乱码问题,故在上面的代码进行了编码格式转换

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

data2
data2
data1
data1
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档