我已經使用nga admin使用節點js我是新的角度js和節點js。我已經在本地主機上使用mysql節點js創建了rest api,並且我使用郵遞員檢查了它,並且它的工作正常。但是,當我解析這個API網址時,它給了我下面的錯誤。看到我想創建管理面板讓用戶編輯刪除和更新只需要實現基本的東西。但它的'顯示我404錯誤HEADERS ERROR。對預檢請求的響應沒有通過訪問控制檢查:沒有'Access-Control-Allow-Origin'標頭存在於角度js
XMLHttpRequest無法加載http://localhost:3000/api/user?_page=1&_perPage=30&_sortDir=DESC&_sortField=id。對預檢請求的響應不會通過訪問控制檢查:請求的資源上不存在「訪問控制 - 允許來源」標頭。因此不允許訪問原產地'http://localhost'。 Server.js文件包含以下代碼。
server.js文件
var express = require('express'),
path = require('path'),
bodyParser = require('body-parser'),
app = express(),
expressValidator = require('express-validator');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json({ type: 'application/vnd.api+json' }));
app.use(bodyParser.json());
var connection = require('express-myconnection'),
mysql = require('mysql');
app.use(
connection(mysql,{
host : 'localhost',
user : 'root',
password : '',
database : 'gkv',
debug : true //set true if you wanna see debug logger
},'request')
);
app.get('/',function(req,res){
res.send('Welcome');
});
var router = express.Router();
router.use(function(req, res, next) {
console.log(req.method, req.url);
console.log(res.headers);
next();
});
var curut = router.route('/user');
curut.get(function(req,res,next){
res.header("Access-Control-Allow-Headers","Content-Type");
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET, PUT, POST,OPTIONS");
req.getConnection(function(err,conn){
if (err) return next("Cannot Connect");
var query = conn.query('SELECT * FROM users',function(err,rows){
if(err){
console.log(err);
return next("Mysql error, check your query");
}
res.json({message: 'All users!',data: rows });
//res.render('user',{title:"RESTful Crud Example",data:rows});
});
});
});
app.use('/api', router);
var server = app.listen(3000,function(){
console.log("Listening to port %s",server.address().port);
});
admin.js文件
var myApp = angular.module('myApp', ['ng-admin']);
myApp.config(function($httpProvider) {
//Enable cross domain calls
$httpProvider.defaults.useXDomain = true;
//Remove the header containing XMLHttpRequest used to identify ajax call
//that would prevent CORS from working
delete $httpProvider.defaults.headers.common['X-Requested-With'];
$httpProvider.defaults.headers.common["Access-Control-Allow-Origin"] = "*";
$httpProvider.defaults.headers.common["Accept"] = "application/json";
$httpProvider.defaults.headers.common["content-type"] = "application/json";
});
myApp.config(['NgAdminConfigurationProvider', function (nga) {
// create an admin application
var admin = nga.application('My First Admin')
.baseApiUrl('http://localhost:3000/api/'); // main API endpoint
// create a user entity
// the API endpoint for this entity will be 'http://jsonplaceholder.typicode.com/users/:id
var user = nga.entity('user');
// set the fields of the user entity list view
user.listView().fields([
nga.field('Nachname').isDetailLink(true),
nga.field('Anrede'),
nga.field('Emailadresse'),
nga.field('Telefonummer'),
nga.field('Date&Time'),
nga.field('URL'),
nga.field('UserIP'),
]);
user.creationView().fields([
nga.field('Nachname'),
nga.field('Anrede'),
nga.field('Emailadresse'),
nga.field('Telefonummer'),
nga.field('Date'),
nga.field('URL'),
nga.field('UserIP')
]);
//user.editionView().fields(user.creationView().fields());
admin.addEntity(user);
/*var post=nga.entity('posts');
post.listView().fields([
nga.field('id'),
nga.field('title'),
nga.field('userId','reference').targetEntity(user).targetField(nga.field('username')).label('User'),
nga.field('comments','referenced_list').targetEntity(nga.entity('comments')).targetReferenceField('postId').targetFields([nga.field('email'),nga.field('name')]).sortField('id').sortDir('DESC')
]);*/
// add the user entity to the admin application
//admin.addEntity(post);
// attach the admin application to the DOM and execute it
nga.configure(admin);
}]);
只是GOOGLE上搜索「的訪問控制允許來源節點服務器」,並得到了這太問題http://stackoverflow.com/questions/7067966/how-to-allow-cors-in-express-node- js#answer-9429405 –
我已經在npm中使用了cors包,現在工作正常 – amrinder
請回答你自己的問題,它可能也會幫助其他人。 – Nirus