当前位置: 首页 > 面试题库 >

如何对Google Maps API进行跨域AJAX调用?

邵博远
2023-03-14
问题内容

我正在尝试对Google MapsGeocoding网络服务进行jQuery$.getJSON调用,但这由于跨域安全性问题而无法使用。

我还没能在网上找到答案,但是我已经读了一些有关Google Javascript API或JSONP的文章,但到目前为止还没有明确的答案…

有人能启发我吗?

谢谢!


问题答案:

当Google Maps提供功能齐全的JavaScript客户端地理编码API时,使用服务器端地理编码Web服务没有任何优势。

首先,这将自动解决您的同源问题,此外,请求限制将按客户端IP地址而不是服务器IP地址进行计算,这对于受欢迎的网站可能会产生巨大的影响。

这是一个使用JavaScript Geocoding API v3的非常简单的示例:

<script src="http://maps.google.com/maps/api/js?sensor=false"></script>

<script type="text/javascript">     
   var geocoder = new google.maps.Geocoder();
   var address = 'London, UK';

   if (geocoder) {
      geocoder.geocode({ 'address': address }, function (results, status) {
         if (status == google.maps.GeocoderStatus.OK) {
            console.log(results[0].geometry.location);
         }
         else {
            console.log("Geocoding failed: " + status);
         }
      });
   }    
</script>

如果出于某些原因您仍想使用服务器端Web服务,则可以设置一个非常简单的反向代理,如果使用的是Apache
,则可以使用mod_proxy。这将允许您为AJAX请求使用相对路径,而HTTP服务器将充当任何“远程”位置的代理。

在mod_proxy中设置反向代理的基本配置指令是ProxyPass。您通常按以下方式使用它:

ProxyPass     /geocode/     http://maps.google.com/maps/api/geocode/

在这种情况下,浏览器可以向发送请求/geocode/output?parameters但服务器将通过充当的代理来提供服务http://maps.google.com/maps/api/geocode/output?parameters



 类似资料:
  • 问题内容: $(document).ready(function(){$ .ajax({url:“ http://gdata.youtube.com/feeds/api/users/zdf/playlists?v=2 ”,键入:“ GET”,成功:function(msg){console.log(msg);}});}); 我收到此错误“ XMLHttpRequest无法加载http://gdat

  • 问题内容: 我期待创建一个JavaScript API,其中包含facebook Javascript API提供的大多数功能。 我可以将脚本标签嵌入到远程网站中,并且需要执行从该页面到我的服务器的所有ajax调用。我正在创建一个体系结构,需要有人帮助他/她的出色思想来完成它。 问题答案: 看看https://github.com/facebook/facebook-js- sdk/blob/de

  • 问题内容: 我了解AJAX跨域策略。因此,我不能仅通过ajax HTTP请求调用“ http://www.google.com ”,并将结果显示在我的网站上。 我使用dataType“ jsonp”进行了尝试,这实际上可以工作,但是出现语法错误(显然是因为接收到的数据不是JSON格式的) 还有其他可能性可以从外部域接收/显示数据吗?iFrame是否遵循相同的政策? 问题答案: 使用AJAX获取跨域

  • 问题内容: 我了解AJAX跨域策略。因此,我不能仅仅通过ajax HTTP请求调用“ http://www.google.com ”,并将结果显示在我的网站上。 我使用dataType“ jsonp”进行了尝试,这实际上可以工作,但是出现语法错误(显然是因为接收到的数据不是JSON格式的) 还有其他可能性可以从外部域接收/显示数据吗?iFrame是否遵循相同的政策? 问题答案: 使用AJAX获取跨

  • 问题内容: 我想从domain2(example2.com)访问位于domain1(example.com)中的JSON文件。例如, 我想从其他网域(例如example2.com)向example.com提出这个Ajax请求。 我已经尝试过JSONP。我不明白它是如何工作的。有人可以解释其工作方式吗? 问题答案: 您的服务必须返回jsonp,这基本上是javascript代码。您需要从ajax请求

  • 问题内容: 我到处环顾四周,但找不到确切的答案。 我需要能够执行AJAX POST并发送自定义标头。我对客户端脚本和服务器端服务都具有完全控制权,因此,如果需要对任何一方进行任何调整才能进行此工作,则可以进行这些更改。 我目前正在使用jQuery,但是,如果jQuery无法做到这一点,并且我需要使用另一个完全没有问题的库。理想情况下,我宁愿坚持使用单个库(jQuery),但如果能解决我的问题,我很