作者:zccst
Ajax请求跨域的理解(端口,域名,主机)
今天同事遇到个奇怪的问题,就是他用JQ的AJAX请求一个URL的时候,通过FIREBUG看到的返回状态时200,但是没有数据,而且那个请求时红色 的,就像返回回来的是404一样。我帮他调了很久,最后看到他浏览器的访问地址是www.xxx.com/xxx,而他AJAX请求的是 www.xxx.com:8080/xxx,端口不一致。我突然想到肯定是AJAX跨域,不过这个可是一个服务器,只是不同的端口而已。然后让他吧 8080去掉,就可以了。
经过几次测试,发现浏览器对AJAX跨域限制很严格,我有一个主机,IP为A,A上80端口,81端口都有服务,然后IP为A的主机上绑定了两个域 名,www.test.com 和www.test1.com,通过这两个IP都能方位到80的服务,但是如果在www.test.com上用AJAX请求www.test1.com的 URL,就不行。就属于跨域。同样,www.test.com上访问www.test.com:81的请求也是跨域。虽然是同一个主机,同一个IP,但是 只要域名不一致,甚至端口不一致,都属于跨域。
那么,如果一个主机上不同端口上部署有不同的服务,怎么用AJAX去调用呢?我的解决办法是通过中间层转发请求。比如www.test.com上要用 AJAX请求81的服务,就在80上写一个功能,请求80,把要传递的参数传给80,在由80的服务器端去发请求,将请求到的数据返回给AJAX.
java发送http的get、post请求
http://www.cnblogs.com/zhuawang/archive/2012/12/08/2809380.html
返回函数的编码是一个问题
解决办法:return ApiResponse.successResponse(str);
@RequestMapping(value = "/test", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public ApiResponse test(HttpServletRequest request) {
String str=AppController.sendGet("http://IP:22200/public-server/news/search/gallery", "query=angelababy&from=webapp");
System.out.println(str);
return ApiResponse.successResponse(str);
}
public static String sendGet(String url, String param) {
String result = "";
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "application/json, text/javascript, */*; q=0.01");
connection.setRequestProperty("content-type", "text/plain; charset=utf-8");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
分享到:
相关推荐
java发送http/https请求(get/post)代码,java 通过发送json,post请求,返回json数据的方法 java 通过发送json,post请求,返回json数据的方法
使用java发送get和post请求实践
java HttpClient 发送GET请求和带有表单参数的POST请求教程例子
java调用HTTP接口(Get请求和Post请求)
java发送get,post请求,可以实现与后台交互,代码便捷高效,是原生代码,支持并发性;代码结构清晰易懂,容易上手;
java实现get请求post请求,文件传输 /** * 发送https请求 * @param requestUrl 请求地址 * @param requestMethod 请求方式(GET、POST) * @param outputStr 提交的数据 * @return 返回微信服务器响应的信息 ...
自己项目里的,可用
java模拟HTTP发送post和get请求工具类,使用httpClient类
利用httpclient-4.3.1.jar、httpcore-4.3.jar包,很简单的用java实现httpget和httppost请求。
完整的java发送http包工程,可发送get及post请求。
Java发送http请求、https请求,post和get都支持
java给微信服务器发送get或post请求完整源码,依赖的jar都已经放到项目的lib目录下,下载下来后就可以直接通过junit运行
java的get和post请求,获取json的工具类,https时会存在ssl校验的问题,工具会自动去除ssl校验。
主要介绍了Java发送http get/post请求调用接口/方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
利用这两个jar包,很简单的用java实现httpget和httppost请求。
httpclient实现的工具类含有以下功能: 1、后台模拟发送GET请求 2、后台模拟发送POST请求 3、解决了中文乱码
java发送post和get请求源码及jar包
java发送ht tp的get、post请求===.doc
封装了https发送Get和Post请求工的具类。直接看Demo例子。样例实现参考 HTTP服务POST方式代码
是一个Java 发送http put、delete、 post、 get 请求的工具类。可用在与restful service 进行通讯的代码中。