Angularjs http.get()Cross-Origin请求被阻止

时间:2016-05-14 08:26:57

标签: javascript angularjs ajax http

$http({
    method: 'GET',
    url: $scope.geoURL,
}).success( function(response) {
    window.alert("3.");
    $scope.resp = response;
    window.alert("3."+response.status);
}).error(function (){
    window.alert("-3");
});

导致以下问题:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://175.107.196.142/search/getPlaceInfoForLocation_v0.0.php?lat=33.541404&lng=73.146358. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

这不是浏览器的问题,从浏览器直接调用时,可以完美地调用相同的URL。

2 个答案:

答案 0 :(得分:0)

如果您可以控制API服务,请添加以下HTTP标头:

Access-Control-Allow-Origin: *

另见http://enable-cors.org/

如果您无法控制API服务,则可以在浏览器和API服务之间设置代理。例如。使用NPM包https://www.npmjs.com/package/cors-anywhere

答案 1 :(得分:0)

您需要做的就是允许您请求的来源,或者允许所有来源。将其添加到您的API。您的API需要将此标头与响应一起发回。

var newEnemy = new enemy("rgb(" + Math.floor(Math.random() * 200) + "," + Math.floor(Math.random() * 200) + "," + Math.floor(Math.random() * 200) + ")", Math.floor(Math.random() * ((500 - 0) / 20)) * 20 + 0, Math.floor(Math.random() * ((500 - 0) / 20)) * 20 + 0);
newEnemy.move();
enemyNum = enemyNum + 1;
}, 10000);

你也有其他一些选择。

  1. 最佳:CORS标头(需要更改服务器)
  2. 代理服务器
  3. JSONP(需要服务器支持)
  4. https://daveceddia.com/access-control-allow-origin-cors-errors-in-angular/