Angular / Node / Express / Passport – 连接到facebook(CORS)时的问题
我试图在我的NodeJs服务器上使用Facebook身份validation。 我来到http://scotch.io/的教程,并使用REST客户端(邮递员等)在本地工作。
为了改善UI,我使用了Angular JS作为前端。 但是当我调用一个http.get到我在NodeJs后台给出的特定路由时,我在chome和firefox中得到了以下错误:
XMLHttpRequest无法加载https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http% … 0%2Fapi%2Fauth%2Ffacebook%2Fcallback&scope = email&client_id = 3000000000006。 请求的资源上没有“Access-Control-Allow-Origin”标题。 因此不允许访问原产地“localhost:8080”。
我已经尝试了几个解决scheme在StackOverflow,但它仍然无法正常工作…我的NodeJs使用Express 4. *和一个CORS中间件。 对于Angular,我发现了几种启用CORS的方法,目前为止还没有任何工作。
我希望你能帮助我:D在此先感谢!
你可以使用'window.location="http://localhost:3000/auth/facebook"';
在您的angular度控制器从您发送请求到您的快递服务器 ,其中包含passport.authenticate
东西。
这将停止您的angular度调用Facebook的身份validation对话页作为AJAX请求。
这个对我有用!
我正在使用Angular和Node / Express,下面的函数适用于我自己的后端服务(我目前没有和Facebook一起使用它),所以请检查一下:
var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, Access-Control-Allow-Origin'); res.header("Access-Control-Max-Age", "86400"); // 24 hours // intercept OPTIONS method if ('OPTIONS' == req.method) { res.send(200); } else { next(); } };
然后,你需要使用app.confiure()
方法,如下所示:
// configure Express app.configure(function() { app.use(allowCrossDomain); ... });
在所有其他directrives之前使用它是重要的!
- 使用适用于Visual Studio的Angular和NodeJS工具构buildNodeJS应用程序
- 如何通过Passport和nodeJS在angularJS前端显示用户信息
- 改变对象的结构javascript
- 当build立AngularJS模板时,咕嘟咕嘟地注释错误
- 使templateUrl指向一个html文件
- 用于在angularjs和node.js之间共享库的模式
- XMLHttpRequest无法加载预检的响应无效(redirect)
- 为什么会用`execvp`全新安装node.js和量angular器错误没有这样的文件或目录?
- 在Windows上使用karma-browserify找不到模块错误