使用NodeJS压缩的base64查询参数

 俺是胖墩墩_499 发布于 2023-01-02 11:33

我正在编写一个基于节点的Web服务,希望第三方发送经过压缩和base64编码的SAML请求。在一天的大部分时间里四处闲逛之后,我担心我不确定自己甚至不知道该问些什么(我很抱歉这是骗子)。

文档说:

首先对SAMLRequest进行DEFLATE压缩,然后对Base 64进行编码,然后对URL进行编码。必须对其进行解码和解析

Webstorm控制台日志具有以下查询字符串:

GET /登录?SAMLRequest = fZJRa9swEMff9ymE3m1LipM4InbJ0mwrNCM0bqF9Gap8cQW2lOnksH37ObFbWgZ9lLj76X%2F30%2FLqT9uQE3g0zuaUx4wSsNpVxtY5vS%2B%2FRRm9Kr4sUbWNOMpVF17sHfzuAANZIYIPfd%2FaWexa8HvwJ6Ph%2Fu42py8hHFEmCV%2BImM%2BymMWCswRBd96Ev1GrrKrBJ2eueuXokUPJdc83VoVLqDPqA4lPmJwwxpLG1cZScnOd018HJeaLSsNkqhfAqql6nsyyVFQiEweWqnlfhrv%2BKXOCnB5Ug3C%2BwQ5uLAZlQ04F42nE5hHPSj6VKZc8jfmcP1Gy8y447Zqvxg6L6byVTqFBaVULKIOW%2B9X2VoqYyeehCOWPstxFq36yg9LhAjmZCvzPviOn352rGyAbG8AfvUEg%2B3E3ZDvshpKHVy3irKUXZVEOIj5PcBzj0mLwJi9z%2BveEzwFvRmgxLr%2B%2BxI21axN4i5zUqJIyjTaP23SzftyK9Wwm%2FnO8TN6HKMbjx79U%2FAM%3D

输出

console.log(req.query.SAMLRequest)

显示URL解码已自动完成:

fZJRa9swEMff9ymE3m1LipM4InbJ0mwrNCM0bqF9Gap8cQW2lOnksH37ObFbWgZ9lLj76X / 30 / LqT9uQE3g0zuaUx4wSsNpVxtY5vS + / RRm9Kr4sUbWNOMpVF17sHfzuAANZIYIPfd / aWexa8HvwJ6Ph / u42py8hHFEmCV + 1mM的+ ymMWCswRBd96Ev1GrrKrBJ2eueuXokUPJdc83VoVLqDPqA4lPmJwwxpLG1cZScnOd018HJeaLSsNkqhfAqql6nsyyVFQiEweWqnlfhrv + KXOCnB5Ug3C + wQ5uLAZlQ04F42nE5hHPSj6VKZc8jfmcP1Gy8y447Zqvxg6L6byVTqFBaVULKIOW + 9X2VoqYyeehCOWPstxFq36yg9LhAjmZCvzPviOn352rGyAbG8AfvUEg + 3E3ZDvshpKHVy3irKUXZVEOIj5PcBzj0mLwJi9z + veEzwFvRmgxLr ++ xI21axN4i5zUqJIyjTaP23SzftyK9Wwm / nO8TN6HKMbjx79U / AM =

因此,我假设我必须先解码base64,然后再对其进行充气。(我尝试过充气然后解码,但是仍然失败了,这很有意义):

var zlibJS = require('zlibjs');  //I've tried Node's own zlib but that only appears to work with call backs
...
var b = new Buffer(samlReq, 'base64');
var decoded = b.toString();
var inflated = zlibJS.inflateSync(decoded); //https://github.com/imaya/zlib.js/blob/master/test/node-test.js
//I get an Unsupported compression method 
...//relooking at the test it appears it wants a buffer so switch the above line for this
var inflated = zlibJS.inflateSync(b); // same 500 error

查看github源代码时,当寻找压缩方法时切换到默认值时会抛出此错误,但是我看不到应该在哪里设置。我已经尝试过疯狂登录(出于可读性考虑而删除),并将每一步都放入base64解码器(http://www.motobit.com/util/base64-decoder-encoder.asp),URL解码器(http:// meyerweb.com/eric/tools/dencoder/)和结果不确定的字符串解压缩器(http://i-tools.org/gzip)(解压缩器工具无法解压缩其自身的压缩,因此...)

感谢您提供的任何建议,技巧和工具

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有