【问题标题】:Origin 'http://localhost:3000' is therefore not allowed access Twitter API因此,Origin 'http://localhost:3000' 不允许访问 Twitter API
【发布时间】:2018-02-07 06:00:14
【问题描述】:

我正在开发一个使用Twitter API REST 的网络应用程序。我有一个带有 Twitter 帐户的页面和一个用于添加新帐户的按钮。当按钮被按下时,Angular 控制器中的函数被执行:

// Calls token to add a new Twitter user
    $scope.callToken = function () {
        $http.get('/token')
            .then(function (response) {
                console.log(response);
            });
    };

这是后端服务请求的代码。它只是重定向到 Twitter 以添加新用户。

// routes.js
var token = express.Router();

	token.route('/token')
		.get(cuentasCtrl.getToken);
    
// Account file

exports.getToken = function(req, res) {

	twitter.getRequestToken(function(err, requestToken, requestSecret) {
        if (err)
            res.status(500).send(err);
        else {
            _requestSecret = requestSecret;
            res.setHeader('Access-Control-Allow-Origin', '*');
            res.redirect("https://api.twitter.com/oauth/authenticate?oauth_token=" + requestToken);
        }
    });
};

但我得到下一个错误:

Origin 'http://localhost:3000' is therefore not allowed access Twitter API

我的服务器在 localhost:3000 上运行,如果我将 localhost:3000/token 放在浏览器中,则没有问题。我已经阅读了using CORS 的解决方案并测试了其他浏览器,但它对我不起作用。我做错了什么?

【问题讨论】:

    标签: javascript angularjs node.js web twitter


    【解决方案1】:

    您在快速响应中发送的重定向被您在前端使用的 http 客户端捕获,并且重定向发生在那里。您处于典型的 CORS 情况,当然这不是您与 Twitter REST API 交互的方式。

    您必须在节点端(服务器到服务器)对 Twitter 进行 http 调用,或者使用 Twitter 的客户端客户端库 (https://dev.twitter.com/web/javascript)

    【讨论】:

    • 我认为最好的方法是在节点端做http,因为我不想要链接中包含的东西。只有我想获取 Twitter 令牌以与用户 API REST 交互。
    猜你喜欢
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 2015-02-05
    • 2018-08-12
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多