java 访问 太平洋网ip接口,解决前端js 跨域访问失败问题

前端 js访问太平洋网IP接口地址,返回结果是403 服务器拒绝处理异常,

于是,想到了使用 服务器端访问,然后再将查询结果返回的前端

这是Java的测试源码,【具体的contronller端源码懒得写,其实基本一样】:

 1 public class GetLocationByIP {
 2     @Test
 3     public void IpUtils(){
 4         String ip = "223.73.101.129";
 5         System.out.println(SendGET(ip));
 6     }
 7
 8   public static String SendGET(String ip){
 9
10      String tpy = "http://whois.pconline.com.cn/ipJson.jsp?json=true&ip="+ip;
11         //访问返回结果
12         String result="";
13         //读取访问结果
14         BufferedReader read=null;
15
16         try {
17             //创建url
18             URL realurl=new URL(tpy);
19             //打开连接
20             URLConnection connection=realurl.openConnection();
21             // 设置通用的请求属性
22             connection.setRequestProperty("accept", "*/*");
23             connection.setRequestProperty("connection", "Keep-Alive");
24             connection.setRequestProperty("user-agent",
25                     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
26             //建立连接
27             connection.connect();
28
29             // 获取所有响应头字段
30             Map<String, List<String>> map = connection.getHeaderFields();
31
32             // 遍历所有的响应头字段,获取到cookies等
33             for (String key : map.keySet()) {
34                 System.out.println(key + "--->" + map.get(key));
35             }
36
37             // 定义 BufferedReader输入流来读取URL的响应
38             read = new BufferedReader(new InputStreamReader(
39                     connection.getInputStream(),"gbk"));
40             String line;//循环读取
41             while ((line = read.readLine()) != null) {
42                 result += line;
43             }
44         } catch (IOException e) {
45             e.printStackTrace();
46         }finally{
47             if(read!=null){//关闭流
48                 try {
49                     read.close();
50                 } catch (IOException e) {
51                     e.printStackTrace();
52                 }
53             }
54         }
55         return result;
56     }
57 }

测试截图:

缺点:需要指定ip参数,否则查询的则是服务器网络的公网IP, 速度相对较慢,因为速度与服务器运算速度和网络波动有很大关系 ,因此不太提倡使用。

优点:无跨域问题。

原文地址:https://www.cnblogs.com/c2g5201314/p/12246034.html

时间: 2024-10-18 20:45:07

java 访问 太平洋网ip接口,解决前端js 跨域访问失败问题的相关文章

如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问。

由于 web api 项目通常是被做成了一个独立站点,来提供数据,在做web api 项目的时候,不免前端会遇到跨域访问接口的问题. 刚开始没做任何处理,用jsonp的方式调用 web api 接口,总是报一个错误,如下: 如果你想用JSONP来获得跨域的数据,WebAPI本身是不支持javascript的callback的,它返回的JSON是这样的: {"YourSignature":"嫁人要嫁程序员,钱多话少死得早"} 然而,JSONP请求期望得到这样的JSON

解决Js跨域访问的问题

用Js获取Html标签<input type="file"/>的路径!遇到代码拒绝访问,提示安全验证,不允许跨域访问,简单的设置一下浏览器即可,不过对于不知道的朋友们遇到这种情况也是够发愁的.

三种方法实现js跨域访问

javascript跨域访问是web开发者经常遇到的问题,什么是跨域,一个域上加载的脚本获取或操作另一个域上的文档属性,下面将列出三种实现javascript跨域方法: 1.基于iframe实现跨域 基于iframe实现的跨域要求两个域具有aa.xx.com,bb.xx.com这种特点,也就是两个页面必须属于一个基础域(例如都是xxx.com,或是xxx.com.cn),使用同一协议(例如都是 http)和同一端口(例如都是80),这样在两个页面中同时添加document.domain,就可以实

js跨域访问,No &#39;Access-Control-Allow-Origin&#39; header is present on the requested resource

js跨域访问提示错误:XMLHttpRequest cannot load http://...... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 解决方法: 1.如果请求的url是aspx页面,则需要在aspx页面中添加代码:Response.AddHeader("Access-Contro

js跨域访问

客户端 HTML 1 <div id="oid"></div> 2 <script type="text/javascript"> 3 //获取货号 4 $.ajax({ 5 6 url: "http://192.168.1.191/H.ashx", 7 type: "GET", 8 dataType: 'jsonp', 9 //jsonp的值自定义,如果使用jsoncallback,那么服

【Todo】JS跨域访问问题的解决

做双十一,需要在主会场页面,嵌入我们产品的JS豆腐块.而这个豆腐块需要调用我们后端的数据接口,涉及跨域访问. 参考 http://www.cnblogs.com/2050/p/3191744.html 方案1: 在js中,我们虽然不能直接用XMLHttpRequest请求不同域上的数据时,但是在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的. jquery的jsonp形式: 服务器端如下: protected void Page_Load(object sende

Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法

当使用jQuery Ajax post请求时可能会遇到类似这样的错误提示 XMLHttpRequest cannot oad http://xxxxxx. Origin http://xxxxxx is not allowed by Access-Control-Allow-Origin. 这是Ajax跨域访问权限的问题,服务器端不接受来自另一个不同IP地址的由脚本文件发出的http请求.解决这个问题需要在服务器端进行配置使服务器端可以接受来自不同域的脚本文件的http请求.一个简单的解决方法是

前端的跨域访问解决方案!

方案一].json跨域访问问题,可以把json拷贝到当前服务器中来 错误提示信息:XMLHttpRequest cannot load http://www.runoob.com/try/angularjs/data/Customers_JSON.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefor

js跨域访问问题

1.什么是跨域访问 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被当作是不同的域.如果进行跨域访问,浏览器会报跨域访问异常 NO 'Access Control-Allow-Origin' ....CORS:Cross-orign resource sharing跨域分享资源 总之,当前页面你发送请求时只要协议.域名.端口号有一个与当前页面不一