我正在尝试获取来自API的PDF流返回并将其解析为base64以将其嵌入客户端,API请求的主体返回如下内容:
%PDF-1.5
%????
4 0 obj
<<
/Type/XObjcect
/Subtype/Image
/Width 799
/Height 70
/ColorSpace/DeviceGray
/BitsPerComponent 8
/Filter/FlateDecode
/Length 5181
>>
stream
x???=H#???????A?&?)???B???4iba?&O8H
.
.
.
(The rest was omitted)
Run Code Online (Sandbox Code Playgroud)
我试图以这种方式解析为base64:
console.log(typeof body); // STRING
const encoded = new Buffer.from(body).toString('base64'); //PDF NOT WORKING
Run Code Online (Sandbox Code Playgroud)
但是当我得到这个base64并将其嵌入到html上时它表示该文件无法被禁用,当我尝试将其保存为.PDF文件时,会发生同样的事情.
当我尝试解析为base64相同的pdf但这次从下载的pdf时,嵌入在html中的base64代码工作正常.
fs.readFile('/home/user/downloaded.pdf', function (err, data) {
if (err) throw err;
console.log(typeof data); //OBJECT
const pdf = data.toString('base64'); //PDF WORKS
});
Run Code Online (Sandbox Code Playgroud)
我正在使用const request = require('request');这些请求.
我正在尝试使用 Hapi 的插件Crumb来实施针对 CSRF 攻击的解决方案,但似乎我没有得到解决方案的流程。我可以简单地在每个 http 响应中设置一个令牌作为 cookie。问题来了,如果客户端发出令牌,REST 如何验证 CSRF 令牌?REST 后端如何理解此随机字符串对该请求有效而另一个随机字符串无效?