【发布时间】:2017-02-28 03:20:25
【问题描述】:
我正在尝试构建一个在服务器端使用 Node 和 Express 的 React 应用程序。我在对 Google API 进行 ajax 调用时收到 Cross-Origin Request Blocked 错误。以下是我的 ajax 请求:
$.ajax({
url:
'https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins='+start+'&destinations='+end+'&key=%20'+Key,
dataType: 'json',
cache: false,
crossDomain: true,
success: function(data) {
console.log(json);
}.bind(this),
error: function(xhr, status, err) {
console.error('https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins='+start+'&destinations='+end+'&key=%20'+Key, status, err.toString());
}.bind(this)
});
网址正确,浏览器正常调用时显示json。
我在我的快递服务器中启用了 https。但这并没有帮助。 我尝试更改数据类型:'jsonp',但它给出了 parseerror(未调用 jquery)。 jsonp 需要回调,但我的控制不去回调函数,它继续给出解析错误。
我已在 Google API 控制台中创建了所需的凭据。并尝试使用以下脚本:
<script src="https://apis.google.com/js/client:platform.js?onload=start" async defer></script>
<script>
function start() {
gapi.load('auth2', function() {
auth2 = gapi.auth2.init({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
});
});
}
</script>
在所有情况下我都会收到以下错误:
跨域请求被阻止:同源策略不允许读取 远程资源在 https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=ORIGIN&destinations=END&key=YOUR_KEY。 (原因:CORS 标头“Access-Control-Allow-Origin”缺失)。
但错误仍然存在。有人可以帮我删除这个错误或解析错误(如果是 jsonp 数据类型)。
【问题讨论】:
-
您进行 AJAX 调用有什么具体原因吗?谷歌距离矩阵 API 有 javascript 实现。
-
我只是想使用来自 Google 距离矩阵 API 的 json。我不知道有这样的服务。
-
你现在能拿到吗?这是示例 javascript 实现的链接google distance matrix
-
不,我尝试在我的 React 组件中添加以下示例 (developers.google.com/maps/documentation/javascript/examples/…) 中的脚本,但回调不会转到 initMap 函数......但代码在 html 文件中有效。但是由于我在 JSX 中需要这些脚本,所以它不是 wokring 文件。
-
您可以从该实现中获取 javascript 代码,并可以在您的代码中使用它。如果您从特定节点使用它,还有另一种解决方案。 node implementation link
标签: json ajax google-maps express reactjs