问题原因:之前使用HttpURLConnection做代理,cookie都是可以透传的。今天遇到cookie放不进去的问题。查明原因,是用户登录后,程序放cookie的同时对用户进行了跳转的动作。也就是对方给HttpURLConnection返回了一个302,而HttpURLConnection默认对302自行处理,自己再去请求跳转页面的内容,然后才会将下一个200的内容返回给客户端。
解决方法:
//不自己处理302错误
HttpURLConnection.setFollowRedirects(false);
//设置不自动处理302后,传给客户端的相应也要设置问相应的响应码
response.setStatus(conn.getResponseCode());
//根据自己的需求,将跳转地址进行处理后传给客户端(让客户端通过代理地址访问目标服务器)
if(conn.getResponseCode() == 302){
String location = conn.getHeaderField("location");
location = replaceLocation(location, localDomain);
response.setHeader("Location", location);
}
解决方法:
//不自己处理302错误
HttpURLConnection.setFollowRedirects(false);
//设置不自动处理302后,传给客户端的相应也要设置问相应的响应码
response.setStatus(conn.getResponseCode());
//根据自己的需求,将跳转地址进行处理后传给客户端(让客户端通过代理地址访问目标服务器)
if(conn.getResponseCode() == 302){
String location = conn.getHeaderField("location");
location = replaceLocation(location, localDomain);
response.setHeader("Location", location);
}