Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js &引用;这是不允许的跨来源请求,需要飞行前;passport facebook登录时出错?_Node.js_Facebook Graph Api_Redirect_Cross Domain_Passport.js - Fatal编程技术网

Node.js &引用;这是不允许的跨来源请求,需要飞行前;passport facebook登录时出错?

Node.js &引用;这是不允许的跨来源请求,需要飞行前;passport facebook登录时出错?,node.js,facebook-graph-api,redirect,cross-domain,passport.js,Node.js,Facebook Graph Api,Redirect,Cross Domain,Passport.js,我有一个node.js express应用程序,它提供RESTful API,我正在使用passport进行Facebook身份验证。我在服务器端启用了所有CORS配置,并且能够通过jQueryAjax使用API。但是对于Facebook身份验证,我得到以下错误: XMLHttpRequest cannot load http://localhost:3000/auth/facebook. The request was redirected to 'https://www.facebook.c

我有一个node.js express应用程序,它提供RESTful API,我正在使用passport进行Facebook身份验证。我在服务器端启用了所有CORS配置,并且能够通过jQueryAjax使用API。但是对于Facebook身份验证,我得到以下错误:

XMLHttpRequest cannot load http://localhost:3000/auth/facebook. The request was redirected to 'https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…_me%2Cuser_checkins%2Cuser_likes&client_id=12345678&type=web_server', which is disallowed for cross-origin requests that require preflight. 
/auth/facebook端点就是这样

app.get('/auth/facebook',
    passport.authenticate('facebook', {
        scope: ['email', 'user_about_me', 'user_checkins', 'user_likes'],
        failureRedirect: users.authFailCallback
    }), users.signin);
因此,基本上它被重定向到Facebook的API(302),该API不允许CORS。
有什么办法解决这个问题吗?或者我需要从服务器端本身调用Facebook API?

这看起来可能是一个webkit错误:

你试过在最新的Firefox中复制这种行为吗

如果可以的话,现在(2013-12-05)解决这个问题的最好办法就是让呼叫服务器端。您可能需要服务器端请求来允许IE8兼容,因为IE8不支持很多CORS规范。我使用相同的域代理来让IE8工作


祝您好运。

您不能调用服务器api,这将导致前端302(重定向)。
因此,您必须将用户直接发送到服务器,并将其从服务器重定向到facebook获取结果保存用户,然后将其重定向到您想要的任何地方

我相信缩写词是CORS(跨来源资源共享)对。编辑。谢谢