Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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
Javascript Passport Node.js CORS错误_Javascript_Express_Cors_Passport.js - Fatal编程技术网

Javascript Passport Node.js CORS错误

Javascript Passport Node.js CORS错误,javascript,express,cors,passport.js,Javascript,Express,Cors,Passport.js,我尝试了一百万种方法让passport与我的申请一起工作,但都没有成功。每次尝试登录每个提供商(Facebook、Google、Twitter、Microsoft)都会导致如下错误: XMLHttpRequest cannot load https://www.google.com/accounts/o8/ud?openid.mode=checkid_setup&openid.ns=h…2F%2Ftest.sl%2Fauth%2Fgoogle%2Freturn&openid.re

我尝试了一百万种方法让passport与我的申请一起工作,但都没有成功。每次尝试登录每个提供商(Facebook、Google、Twitter、Microsoft)都会导致如下错误:

XMLHttpRequest cannot load https://www.google.com/accounts/o8/ud?openid.mode=checkid_setup&openid.ns=h…2F%2Ftest.sl%2Fauth%2Fgoogle%2Freturn&openid.realm=http%3A%2F%2Ftest.sl%2F. 
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://test.sl' is therefore not allowed access.
我的应用程序没有那么复杂,这里是我的服务器代码的摘要

var express = require('express');
var ppGoogle = require('passport-google-oauth').OAuth2Strategy;
var app = express();

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(express.static(__dirname + '/public'));
//There's more config

app.listen(7230);

app.get('/auth/google', passport.authenticate('google'));
app.get('/auth/google/return', passport.authenticate('google', {
   successRedirect: '/main',
   failureRedirect: '/login'
}));

passport.use(new ppGoogle({
    clientID: '',
    clientSecret: '',
    callbackURL: 'http://test.sl/auth/google/return'
},
function (accessToken, refreshToken, profile, done)
{
    console.log('done');
}));

有人知道解决办法吗?这件事快把我逼疯了。

你试图通过AJAX加载Google的OAuth提示符,而不是页面导航


您应该将AJAX请求替换为普通导航,

错误来自哪里?首先它不应该这样做。很抱歉,没有指定,这是浏览器尝试进行身份验证的客户端。发出AJAX请求的堆栈跟踪是什么?什么客户端代码在这样做?所有这些都由Passport自动完成。我不知道细节。客户端只是向/auth/google发送了一个GET请求,这是错误的;您需要导航到该URL,而不是AJAX请求它。