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

Angularjs http.get() Cross-Origin request is getting blocked

本文关键字:请求 Cross-Origin http get Angularjs      更新时间:2023-09-26
$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。

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

<?php 
header('Access-Control-Allow-Origin: *'); 
?>

但是,您还有其他一些选择。

  1. 最佳:CORS 标头(需要更改服务器(
  2. 代理服务器
  3. JSONP(需要服务器支持(

https://daveceddia.com/access-control-allow-origin-cors-errors-in-angular/

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

Access-Control-Allow-Origin: *

另请参阅 http://enable-cors.org/

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