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

时间:2025-05-15 22:03:11

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

 java相关代码


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


封装的 AJAX .js

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

 = ();
 = function(callback){
    =function(){
        if(==4){
            if(==200){
                callback();
            }
        }
    };
};

 = function(url,callback,async){
	async=async=="undefined"?true:false;
    url = AJAXPROXY+encodeURIComponent(url);
    ('get',url,async);
    (null);
    !async?callback():(callback);
};

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

调用例子,参数说明

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