提前抱歉此问题中使用的(可能)不正确的术语。
我有一个小的nodejs api,可动态生成pdf并使用缓冲区对象进行响应。返回响应的相关部分应为:
res.write(buffer,'binary')
res.end(null, 'binary')
在localhost上直接运行应用程序时,它会正确返回pdf。
但是,在我的服务器上运行相同的代码时,它会返回一些乱码:
%PDF-1.4
1 0 obj
<<
/Title (þÿ)
/Creator (þÿ)
/Producer (þÿ�Q�t� �5�.�5�.�1)
/CreationDate (D:20171020141355)
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
>>
endobj
4 0 obj
[... and so on]
在本地运行应用程序但连接到服务器上的正确端口时也是如此。由于代码是相同的,我假设问题可能是nginx如何处理数据。这是当前nginx设置的(可能)相关位:
location /my/api {
proxy_pass http://localhost:1111;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering on;
}
感谢您提供有关如何解决此问题的任何建议!
修改:将上面的节点响应更改为以下内容可解决此问题。感谢评论中的帮助!
res.type('application/pdf')
res.send(buffer)