node.js - Auth0:JSON序列化扩展点结果时出错

标签 node.js proxy jwt auth0

我正在通过服务器代理向 Auth0 发送 token 请求,效果非常好。然而,今天相同的代码只会返回:

{"error":"server_error","error_description":"JSON 序列化扩展点结果时出错"}

我在这里缺少什么?这感觉特别愚蠢,因为上周这没有问题,而且代码从那时起就没有改变。

预先感谢所有阅读/评论的人。

原始请求: {baseURL}/{API PATH}/post?path=https://apropostenantname.auth0.com/oauth/token

正文: {"grant_type":"client_credentials","client_id":"XXX","client_secret":"XXX","audience":"XXX"}

选项,在发送到 Auth0 之前:

{ host: 'apropostenantname.auth0.com',
   path: '/oauth/token',
   port: undefined,
   method: 'POST',
   headers: 
    { 'Content-Type': 'application/json',
      'Content-Length': 200} }

这是代理 Controller :

"use strict";
var rethinkdb = require('rethinkdb');
var async = require('async');
const deepmerge = require('deepmerge');

var https = require('https');
var util = require('util');
var querystring = require('querystring');


exports.proxyPost =  (req,res)=>{
    let req_url = req.query.path;
    let body = JSON.stringify(req.body);
    let auth = req.header('Authorization') ? req.header('Authorization') : null;
    // no auth headers sent with this particular request.
    let contenttype =  req.header('Content-Type') ? req.header('Content-Type')  : 'application/json';
    var headers = {
        'Content-Type': contenttype,
        'Content-Length': body.length
    };

    if(auth != null){
        headers['Authorization'] = auth;
    }
    var match = req_url.match(/^(?:(https?:)?\/\/)?(([^\/?]+?)(?::(\d{0,5})(?=[\/?]|$))?)([\/?][\S\s]*|$)/i);
    //                              ^^^^^^^          ^^^^^^^^      ^^^^^^^                ^^^^^^^^^^^^
    //                            1:protocol       3:hostname     4:port                 5:path + query string
    //                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    //                                            2:host
    let protocol = match[1];
    let host = match[3];
    let port = match[4];
    let path = match[5];
    var options = {
        host: host,
        path: path,
        port:port,
        method: 'POST',
        headers: headers
    };
    console.log(options);
    var _req = https.request(options, function(_res) {
        _res.setEncoding('utf-8');
        let header_keys = Object.keys(_res.headers);
        for(let header of header_keys){
            res.setHeader(header, _res.headers[header]);
        }

        var responseString = '';
        _res.on('data', function(data) {
            responseString += data;
        });

        _res.on('end', function() {
            var responseObject = responseString ? JSON.parse(responseString) : '';
            res.send(responseObject);
        });
    });

    _req.write(body);
    // console.log(_req);
    _req.end();
}

最佳答案

事实证明,我的一个钩子(Hook)返回了一些奇怪的数据或其他东西,从而导致了错误。钩子(Hook)删除,问题解决。

关于node.js - Auth0:JSON序列化扩展点结果时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49906819/

相关文章:

javascript - 与 Google Chrome Puppeteer 互动

javascript - 在 TypeScript 2.0 中正确使用 React.Events?

angular - 设置代理以从不同的 url 加载 rest api

node.js - 使用 JWT 进行 Passport 登录

Android - Kotlin : make GET or PUT request sending JWT

javascript - socket.io 分配自定义 socket.id

javascript - 如何从 github 存储库安装 NodeJS 包

node.js - 如何为 http 调用更新位置

c# - WinSCP .NET 程序集 : Where to define proxy?

c# - .NET Core 2.0和EF下是否需要使用IdentityDbContext进行JWT认证?