如何在xml中检索跨源火山数据?

时间:2019-03-18 23:46:27

标签: jquery ajax xml

我正在为自己的学位开发项目,其中一项要求是在Google地图上显示火山活动。但是,我在使用此资源https://volcano.si.edu/database/webservices.cfm时遇到了CORS问题-我找不到其他可以提供此数据的地方,所有其他留言板都指向该相同资源,但是我很困惑。

我正在使用他们的100个全新火山样品,并直接从他们的示例中使用:

$(document).ready(function(){
  $.ajax({
  type: 'GET',
  url: "https://webservices.volcano.si.edu/geoserver/GVP-VOTW/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=GVP-VOTW:Smithsonian_VOTW_Holocene_Volcanoes&maxFeatures=100",
  dataType: 'xml',
  success: function (data) {
    console.log(data);
    },
    error: function (jqXHR, textStatus, errorThrown) {
      console.log(jqXHR);
      console.log(textStatus);
      console.log(errorThrown);
    }
  });
});

收到此结果:

  

在以下位置访问XMLHttpRequest   'https://webservices.volcano.si.edu/geoserver/GVP-VOTW/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=GVP-VOTW:Smithsonian_VOTW_Holocene_Volcanoes&maxFeatures=100'   来自来源“ http://127.0.0.1:3000”的信息已被CORS政策阻止:   请求中没有'Access-Control-Allow-Origin'标头   资源。

2 个答案:

答案 0 :(得分:1)

除非您可以在https://webservices.volcano.si.edu上控制网站配置,否则如果没有CORS策略(https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS),就不可能发起Ajax请求。

可以通过驻留在同一Javascript域上的服务器端脚本代理请求来获得轻松的解决方案。您可以向代理执行AJAX请求;您必须编写ASP / PHP / etc。脚本以执行对https://webservices.volcano.si.edu

的请求

答案 1 :(得分:1)

AWS可以帮助您。

  • 创建一个帐户并转到API网关。
  • 创建一个新的API并选择您的协议并命名。
  • 选择操作按钮,创建方法,选择GET。
  • 选择http,然后将URL插入为端点
  • 再次选择位置,选择启用CORS,单击“下一步”,一切就这样
  • 部署API,命名阶段,然后使用它提供的URL通过AJAX请求进行调用

因此,将要发生的事情是您将调用AWS-API网关,该网关将把您的请求传递到火山端点。 AWS将通过设置正确的请求头来处理CORS问题。

玩得开心!