Javascript 角度Fullstack+CORS:XMLHttpRequest无法加载

Javascript 角度Fullstack+CORS:XMLHttpRequest无法加载,javascript,angularjs,node.js,express,cors,Javascript,Angularjs,Node.js,Express,Cors,这件事我一直在胡思乱想 angular.module('myApp') .controller('myCtrl', function($scope, offerService){ offerService.getOfferEligibility($scope.user, function(data){ if(data.status == "SUCCESS"){ .... } }) }) 我使用Express在node

这件事我一直在胡思乱想

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
我使用Express在nodeJS服务器上创建了一个小型angular应用程序。我使用的是远程服务,因此我的应用程序中不会写入api服务器端调用

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
工厂:

   var offerServiceURL = "https://www.example.com";
    angular.module("services", ['ngResource'])
    .factory('offerService', function($resource) {
        return $resource(offerServiceURL+'/offers/service/:action/:param1',
        {
            action: '@action'
        },
        {

            getOfferEligibility : {
                method: 'POST',
                params: {action:'get-offer-eligibility'}
            }
        });
    }); 
angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
控制器:

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
Chrome给了我一个一般性错误:

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
无法加载XMLHttpRequest . 不 “Access Control Allow Origin”标头出现在请求的服务器上 资源因此,起源是 不允许访问

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
请求标头使其指向具有正确信息的选项:

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
请求方法:选项状态代码:200 OK Response Headers view source 访问控制允许凭据:true 访问控制允许标头:内容类型 访问控制允许方法:GET、POST、OPTIONS 访问控制允许来源:

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
但是,它在POST处中断,并且没有正确的标题

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})

事实上,我的团队中的其他人能够使用在网页上运行的同一个Angle factory从他们的本地机器成功地访问该服务。我将我的标题与一篇成功文章的标题进行了比较。我缺少POST请求中的访问控制标题

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})

我能想到的唯一差异是,他们正在尝试使用端口为8080的Java应用程序。这有区别吗?任何见解都会有帮助

该问题与客户端的CORS问题无关。答案是服务不喜欢我的数据。如果数据不正确,API将返回不正确的CORS头,而不是发送数据不正确的响应

该问题与客户端的CORS问题无关。答案是服务不喜欢我的数据。如果数据不正确,API将返回不正确的CORS头,而不是发送数据不正确的响应

您可以使用expressjs的CORS模块,使用expressjs应用程序在应用程序中启用CORS

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
装置

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
使用简单,支持所有CORS请求

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})

有关更多详细信息,请转到

您可以使用expressjs的CORS模块,使用expressjs应用程序在应用程序中启用CORS

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
装置

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})
使用简单,支持所有CORS请求

angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})

有关更多详细信息,请转到

理论上,这应该是可行的。-你看过返回的标题了吗?你检查过它们是否正确了吗?我的团队中的其他人能够成功地从不同的IP访问服务,而不会遇到任何CORS问题-他们是通过网页中运行的JavaScript来访问服务的吗?顺便说一句,你提到的返回404。@envante-这是因为example.com用于示例URL。真正的URL大概在一个私有开发网络上。node的CORS模块工作得很好,我只需要安装它。我不知道yeoman generator是如何设置的,但可能他们在服务器上没有任何CORS设置,或者错过了允许发布的内容。我的CORS工作/不工作取决于我使用的浏览器。这可以解释为什么你的团队成员没有问题。无论哪种方式,您都应该在服务器上完全启用CORS。理论上,这应该是可行的。-你看过返回的标题了吗?你检查过它们是否正确了吗?我的团队中的其他人能够成功地从不同的IP访问服务,而不会遇到任何CORS问题-他们是通过网页中运行的JavaScript来访问服务的吗?顺便说一句,你提到的返回404。@envante-这是因为example.com用于示例URL。真正的URL大概在一个私有开发网络上。node的CORS模块工作得很好,我只需要安装它。我不知道yeoman generator是如何设置的,但可能他们在服务器上没有任何CORS设置,或者错过了允许发布的内容。我的CORS工作/不工作取决于我使用的浏览器。这可以解释为什么你的团队成员没有问题。无论哪种方式,都应该在服务器上完全启用CORS。
angular.module('myApp')
.controller('myCtrl', function($scope, offerService){
   offerService.getOfferEligibility($scope.user, function(data){
         if(data.status == "SUCCESS"){
           ....
         }    
   })
})