护照Facebook策略,使用AJAX触发路由
Passport Facebook Strategy, trigger route with AJAX
问题: XMLHttpRequest cannot load https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…lhost%3A8080%2Fapi%2Fauth%2Ffacebook%2Fcallback&client_id=1527429390857121. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
如果我单击错误中的链接,我会被自动处理并以 json 格式取回数据。如果我删除客户端js路由器,一切正常。但我正在尝试构建一个 SPA 应用程序。
我没有使用任何特定的前端框架,我使用熨斗导向器路由器并生成带有车把的视图。
在客户端:
var facebook = function () {
console.log('GET /auth/facebook');
$.ajax({
url: '/api/auth/facebook',
type: 'get',
dataType: 'jsonp',
cache: false
});
};
// ROUTES ===============================
var routes = {
...
'/auth': {
'/facebook' : facebook,
'/twitter' : twitter,
'/google': google
},
...
};
在服务器端:
// send to facebook to do the authentication
router.get('/auth/facebook', passport.authenticate('facebook'));
// handle the callback after facebook has authenticated the user
router.get('/auth/facebook/callback', function(req, res, next) {
passport.authenticate('facebook', function (err, user, info) {
if (err) return next(err);
if (!user) return res.status(403).json(info);
req.logIn(user, function (err) {
if (err) { return next(err); }
return res.json({user: user, message: info});
});
})(req, res, next);
});
在服务器中.js
...
app.use('/api', router);
...
尝试将其添加到服务器:
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
next();
});
这似乎是一个 cors 问题:
请尝试以下操作:
$ npm install cors
然后,在您的服务器中.js:
var cors = require('cors');
...
app.use(cors());
有关 cors 模块的更多详细信息:https://www.npmjs.com/package/cors
在CORS和Ajax上:http://www.bennadel.com/blog/2327-cross-origin-resource-sharing-cors-ajax-requests-between-jquery-and-node-js.htm
- Codeigniter :通过 AJAX 调用 php 脚本时路由不起作用
- 你能优化我的路由和 ajax 请求吗?(PHP/Laravel)
- Angular中的ajax调用和路由问题
- FOSUserBundle AJAX登录Symfony2(路由)
- ng视图路由模板是否反映了ajax请求所做的更改
- 405 方法不允许 - 带有 laravel 路由的 ajax 请求
- 如何通过角度服务器路由发送 Ajax 参数
- 护照Facebook策略,使用AJAX触发路由
- 如何在一个路由中有多个 ajax 调用
- 更改路由并更新对节点服务器的 ajax 请求的视图
- 否则,在 AJAX 数据上的路由不起作用
- ajax返回时的角度加载路由
- 使用ajax将json数据发布到sinatra路由并发送到数据库
- 每次更改路由时都会调用Angular factory ajax
- Node.js AJAX路由在评估引用的函数之前返回数据
- 完整的ajax请求或更多路由
- 服务器在ajax调用上返回空响应可能是路由错误
- AJAX路由不适用于我在Laravel中的自定义函数
- Rails 4数据ajax路由问题
- 代码点火器路由.AJAX使用javascript获取参数