jsp跨域访问cookies_使用jsp代理解决跨域问题引发的乱码问题

今天在做一个界面优化的时候顺便解决其中的QQ昵称查询问题,使用了“http://users.qzone.qq.com/fcg...号码”,出现两个问题,第一个跨域问题,后来用jsp代理解决了,但是出现了中文乱码问题,只要QQ昵称中包含中文一律以“???”显示,现贴出来原网页中js代码和使用的jsp代理代码,希望高手鞥帮看下,谢谢

原网页代码:

QQ昵称查询

function gb2utf8(data){

var glbEncode = [];

gb2utf8_data = data;

execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");

var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2");

t=t.split("@");

var i=0,j=t.length,k;

while(++i

k=t[i].substring(0,4);

if(!glbEncode[k]) {

gb2utf8_char = eval("0x"+k);

execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");

glbEncode[k]=escape(gb2utf8_char).substring(1,6);

}

t[i]=glbEncode[k]+t[i].substring(4);

}

gb2utf8_data = gb2utf8_char = null;

return unescape(t.join("%"));

}

function cxName()

{

var xmlhttp;

var puname = document.getElementById("playerusername").value;

if (window.XMLHttpRequest)

{

xmlhttp = new XMLHttpRequest();

}

else

{

var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];

for(var n = 0; n < MSXML.length; n ++)

{

try

{

xmlhttp = new ActiveXObject(MSXML[n]);

break;

}

catch(e)

{

}

}

}

xmlhttp.onreadystatechange=function()

{

if (xmlhttp.readyState==4 && xmlhttp.status==200)

{

var myString = xmlhttp.responseBody;//responseText responseBody

//alert(myString);

myString = gb2utf8(myString);

var str= new Array();

str = myString.split(",");

var name = str[6];

str = name.split("\"");

name = str[1];

document.getElementById("qqnicheng").value = name;

}

}

//portraitCallBack({"89022090":["http://qlogo3.store.qq.com/qzone/89022090/89022090/100",412,-1,0,0,0,"威讯",0]})

xmlhttp.open("GET","proxy.jsp?url=http://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins="+puname,true);

xmlhttp.send();

}

var t1;

function checkNC()

{

var qq1;

var qq2;

if (orderlist.length==0)

{

return false;

}

for (i=0 ;i

{

var tmp =document.getElementById(orderlist[i]);

if (orderlist[i]=="qqnicheng")//

{

qq1 = document.getElementById("playerusername").value;

qq2 = document.getElementById("replayerusername").value;

if ((qq1 == qq2 )&&qq1!="undefined"&&qq1!="")

{

//document.getElementById("qqnicheng").value = document.getElementById("playerusername").value;

//window.clearInterval(t1);

cxName();

//window.clearInterval(t1);

}

}

}

}

t1 = window.setInterval(checkNC,5000);

jsp代理文件(proxy.jsp):

\

String url = null;

StringBuffer params = new StringBuffer();

Enumeration enu = request.getParameterNames();

//String str=request.getQueryString();

//System.out.println(str);

while (enu.hasMoreElements()) {

String paramName=(String)enu.nextElement();

if(paramName.equals("url")){

url=request.getParameter(paramName);

}else{

//有的url参数顺序有规定,按此读出的是逆序,因此要插到paramName的前面

params.insert(0, URLEncoder.encode(request.getParameter(paramName), "gb2312"));

params.insert(0, "=");

params.insert(0, paramName);

if(enu.hasMoreElements()){

params.insert(0, "&");

}

}

}

url = url + "?" + params.toString();

//out.println(url);

System.out.println("url:"+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()));

String line;

while((line = reader.readLine()) != null){

out.println(line);

}

reader.close();

}

%>

实在不知道原因,希望哪位前辈能帮解答下,谢谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值