2016-01-20 118 views
0

我已經使用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); 
}]); 
+0

只是GOOGLE上搜索「的訪問控制允許來源節點服務器」,並得到了這太問題http://stackoverflow.com/questions/7067966/how-to-allow-cors-in-express-node- js#answer-9429405 –

+1

我已經在npm中使用了cors包,現在工作正常 – amrinder

+1

請回答你自己的問題,它可能也會幫助其他人。 – Nirus

回答

-2
作爲

我已經使用芯包NPM和使用節點JS CMD安裝它和下面的代碼添加這以上查詢已經解決在server.js文件

cors = require('cors'); 
// use it before all route definitions 
app.use(cors({origin: 'http://localhost'})); 
1

我解決我的問題,通過添加以下到我的「app.js」文件,就像一個通道臂。

var app = express() 
, cors = require('cors') 
, app = express(); 
app.use(cors()); 
相關問題