比如访问谷歌地图 ditu.google.cn,这个过程会加载很多资源,比如字体、图标等,而这些资源有的没有链接到.cn,而是链接到.com,造成加载失败。比如一个图标的原始链接:http://mt.googleapis.com/maps/vt/icon/name=icons/spotlight/spotlight-waypoint-a.png&text=A&psize=16&font=fonts/Roboto-Regular.ttf&color=ff333333&ax=44&ay=48&scale=1其实只需修改前面http://mt.googleapis.com部分,改成http://mt.google.cn 就能正常访问。现在问题就是如何实现这样的修改?具体一点就是访问ditu.google.cn的一些API,如何把加载的一些资源的地址从http://mt.googleapis.com改成http://mt.google.cn?谢谢!

解决方案 »

  1.   

    如果只是你自己使用,可以改hosts文件,
    如果是提供网络服务供别人使用,除非所所有的代码都是自己服务器处理的,如果是人家api中产生的,不能进行修改
      

  2.   

    我看了一下这些要加载图标都是GET方式,能不能截获GET然后修改呢?按这个思路查询了也没有解决方案。
      

  3.   

    请求都是浏览器发送的,你没法改啊,除非你能修改浏览器中生成的代码,
    举例来说,假如有一段js代码
    $.ajax("http://mt.googleapis.com"),如果你的页面代码是这样的
    $.ajax("http://mt.googleapis.com"),
    这样可以替换如果你的页面是这样的
    <script src="http://mt.google.cn/xx/api"> $.ajax("http://mt.googleapis.com"),是api中生成的,那就不能替换,因为内容是http://mt.google.cn/xx/api控制的,你控制不了所以你要清楚哪些代码是自己的,哪些是google 的
      

  4.   

    核心代码是这样的:
    <html>
      <body>   
        <div id="map"> 
    </div>
        <script>
          function initMap() {          
            map = new google.maps.Map(document.getElementById('map'), {
              zoom: 7,
              center: {lat: 41.85, lng: -87.65}
            });           
           map.doSomething(); //这个过程会加载一些图标
          }   
        </script>
    <script   src="http://ditu.google.cn/maps/api/js?callback=initMap"> </script>
      </body>
    </html>
    其实很简单,就是显示地图,调用API执行一些任务,这些.com的图标就是在这个过程加载的,只需要把加载的图标的网址的.com部分改成.cn就可以了。就是不知道怎么改。
      

  5.   

    做插件给浏览器安装,不过主要是拦截,修改请求url好像不行,如adblock plus插件之类都是拦截用Web开发学习资料推荐
    asp json类库解析json字符串
    javascript解码读取二维码信息
      

  6.   

    我印象中要到服务器上去改,服务器通过匹配到你输入.cn,它就会跳转访问到.com..........
      

  7.   


    既然可以拦截应该就能修改,就在自己技术差,不知道怎么修改。
    firefox浏览器的插件API:https://developer.mozilla.org/zh-CN/Add-ons/WebExtensions/API/webRequest谷歌的自己找下
      

  8.   


    既然可以拦截应该就能修改,就在自己技术差,不知道怎么修改。
    firefox浏览器的插件API:https://developer.mozilla.org/zh-CN/Add-ons/WebExtensions/API/webRequest谷歌的自己找下琢磨了下这个,确实可以实现,很不错。核心代码:
    chrome.webRequest.onBeforeRequest.addListener(
            function(details) {
        if(details.url.indexOf("mt.googleapis.com")!=-1)
    {
    console.log("ori  "+details.url);
    var s=details.url.replace("mt.googleapis.com","mt.google.cn");
    return {redirectUrl:s}; 
    }
    },
            {urls: ["<all_urls>"]},
            ["blocking"]);很好的达到了跳转的目的。但是有一个问题就是如果给用户使用的话,用户也必须安装插件才能实现这样的目的,这肯定是不实际的。如果能把这个插件转成一个独立的JS就完美了,现在正在研究。谢谢版主推荐!
      

  9.   


    既然可以拦截应该就能修改,就在自己技术差,不知道怎么修改。
    firefox浏览器的插件API:https://developer.mozilla.org/zh-CN/Add-ons/WebExtensions/API/webRequest谷歌的自己找下琢磨了下这个,确实可以实现,很不错。核心代码:
    chrome.webRequest.onBeforeRequest.addListener(
            function(details) {
        if(details.url.indexOf("mt.googleapis.com")!=-1)
    {
    console.log("ori  "+details.url);
    var s=details.url.replace("mt.googleapis.com","mt.google.cn");
    return {redirectUrl:s}; 
    }
    },
            {urls: ["<all_urls>"]},
            ["blocking"]);很好的达到了跳转的目的。但是有一个问题就是如果给用户使用的话,用户也必须安装插件才能实现这样的目的,这肯定是不实际的。如果能把这个插件转成一个独立的JS就完美了,现在正在研究。谢谢版主推荐!
    不行的,这个是插件的功能
      

  10.   

    这个需要修改谷歌地图的API,应该不能