2012-03-05 59 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)

相關問題