2012-03-05 61 views
0

是否可以使Google Placess API WebService允许来自我的域的跨域请求,以便我可以直接从浏览器访问该服务?我正在试验API密钥,方法是创建一个浏览器API密钥,然后将我的域添加到查阅者列表中,但无济于事。不知道这是否是这个参评者的财产。调用Google Places API Web服务时是否可以避开Cross-Origin限制?

这是限制的设计,还是我缺少的东西在这里?

Google Places API WebService是我想要使用的服务。 Places Library中的地方自动填充或地方搜索都不适合我的特殊要求。

干杯

了Stian

回答

0

这是一个客户端基础的限制,所以简单的答案是:没有。

但是有些网站和服务试图通过使用脚本(即时加载它们)来解决这个问题。

Have a look herehere(这些文章都是有关通用跨域AJAX请求)

+0

就我所知,客户端可以如果目标服务器允许通过将Access-Control-Allow头添加到响应来发出跨站点ajax请求,如[这里]所述(http://www.nczonline.net/blog/2010/05/25/cross-域的Ajax-WI因此,问题是如果可以为特定域启用自动完成API WebService,那么问题是真的。这将涉及(在谷歌方面)匹配请求中的API密钥和允许的引用者列表。 – 2012-03-05 13:42:25

+0

'访问控制,Allow'只适用于“现代”浏览器(IE6和7不会允许) – MMM 2012-03-05 15:46:24

+0

这没关系,因为我们不支持IE6和7反正:) – 2012-03-06 07:13:35

0

的地方,API也可在Maps-Javascript-API里面,你不需要跨起源有奋斗。

+0

在地方图书馆的自动完成功能的设计将自动完成搜索添加到现有的输入字段。它不允许增加搜索结果。这就是我要使用Places自动填充Web服务的原因。 – 2012-03-06 07:18:48

+0

我说的不是自动完成,看一看的地方搜索请求:http://code.google.com/intl/en/apis/maps/documentation/javascript/places.html#place_search_requests – 2012-03-06 10:08:10

+0

我请注意,图书馆,但它具有一定的局限性,使得它不适合我,比如50公里半径的限制,这是缺乏匹配的子信息(Web服务确实提供)。 AutoComplete WebService似乎也提供了更好的结果,而不需要用户输入他之后的地方的全名,这是自动完成搜索的全部内容。 – 2012-03-06 15:10:25

0

让我说,它不可能得到解决。我用java不是代码只适用于HTTP请求尝试(我这里使用的是graph.facebook.com):

public class search { 
    private static String readAll(Reader rd) throws IOException { 
     StringBuilder sb = new StringBuilder(); 
     int cp; 
     while ((cp = rd.read()) != -1) { 
      sb.append((char) cp); 
     } 
     return sb.toString(); 
     } 

     public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException { 
     InputStream is = new URL(url).openStream(); 
     try { 
      BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); 
      String jsonText = readAll(rd); 
      JSONObject json = new JSONObject(jsonText); 
      return json; 
     } finally { 
      is.close(); 
     } 
     } 
    public static void main(String[] args) throws Exception{ 
     // TODO Auto-generated method stub 
     System.getProperties().put("http.proxyHost", "172.16.0.2"); 
     System.getProperties().put("http.proxyPort", "8080"); 
     JSONObject json = readJsonFromUrl("http://maps.googleapis.com/maps/api/place/nearbysearch/json?key=AIzaSyBRlMLIdoTk-j4OZCucR47rVMLhMmvZVRw&type=hospital&location=12.8213125%2C80.0442&radius=500&_=1427359809583"); 
     System.out.println(json.toString()); 
     // System.out.println(json.get("about")); 
     // System.out.println("hello "); 
    } 

} 

如果更换链接与地方api网络搜索它将无法正常工作,原因是谷歌不提供其服务的HTTP域,,,我的代码只适用于HTTP域(不是HTTPS)

相关问题