node.js – “在护照facebook登录时不允许需要预检的跨源请求”错误?

我有一个node.js express app,提供RESTful API,我使用护照进行Facebook身份验证.我在服务器端启用了所有CORS配置,并且能够通过jQuery Ajax使用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),它不允许CORS.
有什么方法可以解决这个问题吗?或者我需要从服务器端调用Facebook API?

解决方法

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

https://bugs.webkit.org/show_bug.cgi?id=112471

您是否尝试在最新的Firefox中重现此行为?

现在(2013-12-05)修复此问题的最佳选择是尽可能使呼叫服务器端.您可能需要服务器端请求以允许IE 8兼容性,因为IE 8不支持大部分CORS规范.我使用同域代理来使IE 8工作.

祝好运.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...