Angular Fullstack + CORS:XMLHttpRequest无法加载

我一直在这个上拉我的头发。

我用yeoman生成器angular-fullstack在ExpressJS服务器上用Express创build一个小的angular度应用程序。 我正在使用远程服务,所以没有API服务器端调用写在我的应用程序。

厂:

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

铬给我一个一般的错误:

XMLHttpRequest无法加载https://example.com/offers/service/get-offer-eligibility 。 请求的资源上没有“Access-Control-Allow-Origin”标题。 Origin'http: //localhost.digitalink.com:9000 '因此是不允许访问的。

请求标题使其成为具有正确信息的选项:

请求方法:OPTIONS状态码:200 OK响应头视图源Access-Control-Allow-Credentials:true Access-Control-Allow-Headers:内容typesAccess-Control-Allow-Methods:GET,POST,OPTIONS访问控制 – 允许来源: http : //localhost.digitalink.com : 9000

但是它在POST中断并且没有正确的标题。

实际上,我的团队中的其他人员可以使用网页上运行的相同angular度的工厂,从本地计算机成功访问服务。 我比较了我的标题与成功的POST上的标题。 我缺less我的POST请求上的访问控制标题。

我能想到的唯一的差异是他们正在尝试从端口8080的Java应用程序。这是否有所作为? 任何见解都会有所帮助!

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

安装

 npm install cors 

简单使用(启用所有CORS请求)

 var express = require('express'); var cors = require('cors'); var app = express(); app.use(cors()); 

有关更多详细信息,请访问https://github.com/expressjs/cors

这个问题与客户端的CORS问题无关。 答案是服务不喜欢我的数据。 如果数据不好,则API返回错误的CORS头,而不是发送数据不好的响应。