ajax 代理 中转 http请求,处理 跨域访问 问题

通过 jsp 上 书写 java 代码 执行 http 请求 中转 来处理跨域问题

ajax.jsp  java相关代码


<%@ page import="java.net.*,java.util.*,java.lang.*,java.io.*"%>
<%@ page contentType="text/xml;charset=utf-8"%>
<%  
	//1.接收url参数
	String url = null;
	StringBuffer params = new StringBuffer();
	Enumeration enu = request.getParameterNames();
	int total = 0;
	while (enu.hasMoreElements()) {
		String paramName = (String) enu.nextElement();
		if (paramName.equals("url")) {
			url = request.getParameter(paramName);
		} else {
			if (total == 0) {
				params.append(paramName)
						.append("=")
						.append(URLEncoder.encode(
								request.getParameter(paramName), "UTF-8"));
			} else {
				params.append("&")
						.append(paramName)
						.append("=")
						.append(URLEncoder.encode(
								request.getParameter(paramName), "UTF-8"));
			}
			++total;
		}
	}
	//2.请求url获取数据
	if (url != null) {
		// 使用GET方式向目的服务器发送请求
		URL connect = new URL(url.toString());
		URLConnection connection = connect.openConnection();
		
		connection.connect();
		BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));//注意处理编码问题
		String line;
		while ((line = reader.readLine()) != null) {
			out.println(line);//输出数据给ajax回调函数接收
		}
		reader.close();
	}
%>


封装的 AJAX .js

/**
 * JavaScript Ajax Library 
 * 
 * 
 * get调用方式
 * Ajax.get(
 * 		url,
 * 		function(data){
 * 			//处理返回数据后
 * },async
 * );
 * 
 * post调用方式
 * Ajax.post(
 * 		url,
 * 		function(data){
 * 			//处理返回数据后
 * 	},async
 * );
 */
var AJAXPROXY = js/ajax.jsp?url=';//注意ajax.jsp路径
var Ajax = new Object();
Ajax.request = function(){
    if(window.XMLHttpRequest) {
        var Ajax = new XMLHttpRequest();
    }else if (window.ActiveXObject) { 
        try {
            var Ajax = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
            	var Ajax = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!Ajax) { 
	    /*window.alert("不能创建XMLHttpRequest对象<SPAN class=hilite2>实例</SPAN>.");*/
	    return false;
    }
    return Ajax;
};

Ajax.req = Ajax.request();
Ajax.Handle = function(callback){
    Ajax.req.onreadystatechange=function(){
        if(Ajax.req.readyState==4){
            if(Ajax.req.status==200){
                callback(Ajax.req.responseText);
            }
        }
    };
};

Ajax.get = function(url,callback,async){
	async=async=="undefined"?true:false;
    url = AJAXPROXY+encodeURIComponent(url);
    Ajax.req.open('get',url,async);
    Ajax.req.send(null);
    !async?callback(Ajax.req.responseText):Ajax.Handle(callback);
};

Ajax.post = function(url,callback,async){
	async=async=="undefined"?true:false;
    url = AJAXPROXY+encodeURIComponent(url);
    Ajax.req.open('post',url,async);
    Ajax.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
    Ajax.req.send(null);
    !async?callback(Ajax.req.responseText):Ajax.Handle(callback);
};
/*字符串转换成json*/
function strToJson(str){
	return eval('('+str+')');
};

调用例子,参数说明

Ajax.get('http://second_ftp_server:8180/weixin-developer/ajaxMain.do?methodName=getSign&url='+encodeURI(window.location.href),
	  		function(data){
	 			//处理返回数据后
				weixin.sign=JSON.parse(data);
				alert(weixin.sign);
			},false);
3个参数  url 要执行的请求获取数据的 url  ,fun () 执行完成之后的 回调函数, async  异步/同步 请求


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值