如何在API和angular度客户端之间启用CORS
我们一直在试图build立CORS几天而没有成功。 因此,非常感谢知道如何做到一劳永逸。 我们想要做的是:
API服务器(当然只是服务器的一部分):
// Config app.configure(function () { app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json()) app.use(express.methodOverride()); app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); app.use(express.static(path.join(application_root, "public"))); app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); app.use(app.router); });
angular度应用服务器(也只是部分设置):
server.use(gzippo.staticGzip(__dirname + '/public')); server.set('view engine', 'ejs'); // Environment var ENV = process.argv[2] || 'dev'; // prod or dev var port = process.env.PORT || 8080; // Single Page App (this route handles all other requests (catchall)) server.all('/*', function(req, res, next) { res.set('Content-Type', 'text/html'); res.render('index', includeFiles); // looks by default in views });
angular度configuration:
app.config(['$locationProvider', '$httpProvider', '$urlRouterProvider', '$stateProvider', function($locationProvider, $httpProvider, $urlRouterProvider, $stateProvider) { ... Other stuff ... // enable CORS $httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers.common['X-Requested-With']; ... } ])
目前,当我们从angular度做一个请求:
$http.post('http://<ip-address>:8889/signin', {email: 'mike@gmail.com', pass: '1234abcd'}) .success(function(data) { console.log(data); });
我们得到以下错误(在Firefox上):
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://<ip-address>/signin. (Reason: CORS preflight channel did not succeed). Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://<ip-address>:8889/signin. (Reason: CORS request failed).
经过一些试验和错误,我们采取了使用npm模块cors和事情smithly工作。
编辑到API服务器:
// Config app.configure(function () { app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json()) app.use(express.methodOverride()); app.use(cors()); // this was included app.use(express.static(path.join(application_root, "public"))); app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); app.use(app.router); });
angular度configuration:
app.config(['$locationProvider', '$httpProvider', '$urlRouterProvider', '$stateProvider', function($locationProvider, $httpProvider, $urlRouterProvider, $stateProvider) { ... Other stuff ... // deleted these rows, since they are unnecessary // $httpProvider.defaults.useXDomain = true; // delete $httpProvider.defaults.headers.common['X-Requested-With']; ... } ])
这就是它! 希望它可以帮助未来的人。
- XMLHttpRequest无法加载http://127.0.0.1:1337/。 请求的资源上没有“Access-Control-Allow-Origin”标题
- http从angularangular色向node.js服务器发送密码
- 使用angular和express-jwt实现刷新令牌
- 当请求来自另一个域时,如何在sailsJS后端应用程序中坚持authentication状态?
- 与风帆的卫星
- 未findnpm:命令。 节点已安装时如何重新安装NPM? NPM去了哪里?
- 如何在页面中包含AngularJS
- 如何在Mean Stack中运行subprocess
- nodejs:npm install命令显示错误