Access-Control-Allow-Origin in angularjs production



在我的 angularjs 应用程序中,我试图从在线休息服务中获取一些信息,在我的情况下是 longtude 和纬度,但给了我一个错误

XMLHttpRequest cannot load http://iatageo.com/getLatLng/OPO. No 'Access-Control-Allow-Origin'
Possibly unhandled rejection: {"data":null,"status":-1,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"http://iatageo.com/getLatLng/OPO","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":""}

我的截取代码是:

$scope.originAirport = 'OPO';
  $http.get('http://iatageo.com/getLatLng/'+$scope.originAirport).then(function(response){
        $scope.originLatLong = response.data;
    });

起初,我认为这是因为我在本地运行,但是在生产中运行后,我遇到了同样的问题。我正在使用 angularjs 1.6*

似乎 API

不允许 CORS,因此请尝试通过创建自己的服务器来解决此问题,该服务器将从 API 获取信息,然后将其传递给您的服务器。

同样,API 不允许 CORS XMLHttpRequest cannot load http://iatageo.com/getLatLng/BSB. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

如果你熟悉 NodeJS Express,你可以在下面使用这个脚本。

const App = require('express')();
const CORS = require('cors');
const RP  = require('request-promise');
const PORT = 3000;
const BASEURL = 'http://iatageo.com/getLatLng/';
App.use(CORS());
App.get('/getLatLng/:airport', function(request, response) {
    const airportCode = request.params.airport;
    const URL = BASEURL + airportCode;
    RP({ url: URL, json: true }).then(function(data) {
        response.json(data);
    });
});
App.listen(PORT, function(err) {
    if (err) throw err;
    console.log('listening to port:', PORT);
});

最新更新