当前位置: 首页 > 知识库问答 >
问题:

使用angularJS的跨域请求

狄旭
2023-03-14

我想显示数据从API使用angularJS。当在同一台电脑上运行代码时,这段代码工作正常。但是当我试图在另一台电脑上测试时,它显示错误,请求的资源上没有访问控制允许来源的标头。angularjs

我使用的是1.4.8

这是我的密码:

$http({
            method:"get",
            url: 'http://IP/Test_API/index.php/test123_api/empdtl_from_empid/emp_id/'+$scope.empId
        })
        .success( function( response ){
            if (response != null || response != 'undefined') {
                $scope.empNm = response.data.emp_name;
            }
        })
        .error( function( response ) {
            if(response.statusCode == 404)
            {
                $scope.errorEmpNm = "You May Inputted Wrong Employee Id which have not Exist, Please Enter Correct Employee Id...!!!";
            }
        })

共有3个答案

濮君植
2023-03-14

您必须在响应中启用CORS。一个解决方法是使用针对Chrome的enable CORS插件。但是,请注意,这不是针对真正客户的解决方案,它会对您的浏览器产生副作用。仅用于测试

真正的修复是您必须在服务器端执行的操作。在后端启用“允许控制”“允许来源”的方式取决于后端的体系结构。将“Allow Control Allow Origin”添加到响应的标题中,问题将得到解决。

对于PHP,在响应头中添加以下内容

header("Access-Control-Allow-Origin: *");
都乐逸
2023-03-14

您可以尝试$http.jsonp(),它可以进行跨源请求,但请求方法的唯一选项是GET,并且您不能使用它来承载较大的负载,因为浏览器可能会限制URL长度。

注意url中的回调=JSON_CALLBACK

var url = "http://other.domain.com/some/path?callback=JSON_CALLBACK";
$http.jsonp(url, {params: {param1: value1, param2: value2}})
     .success(function(response) {
       // ...
     })
     .error(function(response) {
       // ...
     })
洪伟兆
2023-03-14

您无法通过javascript解决它。您向其发出请求的服务器必须实现CORS,以便从您的网站访问中授予JavaScript。您的JavaScript无法授予自己访问其他网站的权限。

 类似资料:
  • 问题内容: 我有一个使用AngularJS构建的简单网站,该网站调用json数据的API。 但是我遇到了跨域起源问题,是否可以解决跨域请求? 错误: XMLHttpRequest无法加载http://api.nestoria.co.uk/api?country=uk&pretty=1&action=search_listings&place_name=soho&encoding=json&list

  • 我有一个简单的网站,我正在用AngularJS构建,它为json数据调用API。 然而,我得到跨域起源的问题,是否有任何围绕这允许跨域请求? 错误: XMLHttpRequest无法加载http://api.nestoria.co.uk/api?country=uk

  • 我试图从我的新Angular应用程序中调用REST web服务。当发出请求时,我会得到以下错误: XMLHttpRequest无法加载http://localhost:8080/WebService。请求的资源上没有“访问-控制-允许-来源”标头。因此,不允许访问源“http://localhost”。 我发现这是因为浏览器不允许这样的操作。 编辑我也试着把它添加到我的angular应用程序中:

  • 问题内容: 我正在尝试向不受控制的域上的API发出一个简单的JSON获取请求。 我的代码很简单: 但这是跨域请求,因此我在Chrome控制台中收到此错误: 当我尝试添加参数时,控制台将返回此错误: 未捕获到的SyntaxError:意外令牌: 但是,当我检查Chrome中的“网络”标签时,我看到“标题”下的状态代码为200 OK,实际上我可以在“响应”标签中看到完整的响应,但控制台仍显示“意外令牌

  • 问题内容: 帮助,如果您可以- 情况: http://foobar.com包含一个远程托管的Javacript文件(http://boobar.com/stuff.js)。 目标是从foobar.com上的远程托管php脚本中获取警报 我在stuff.js中尝试了以下代码: 没运气。 也没有运气。 在php端,我尝试了以下两种方法: 在Firefox中,出现安全错误。我了解它认为我违反了安全模型。

  • 在浏览器的沙箱环境下,默认只允许js代码请求其所属域的数据,不同域名/ip/协议,都默认禁止. 跨域所需要的是,是响应浏览器发起的OPTIONS,及真正的GET/POST, 共2个请求哦. 所需要的逻辑CrossOriginFilter已经封装好了 如何解决 nutz给出的方案非常简单,仅需要在入口方法上添加CrossOriginFilter即可 @Filters(@By(type=CrossO