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"){
....
}
})
})