使用客户端证书使用Python请求库将HTTP响应中的PDF文件直接流传输到客户端

问题描述

我正在向端点请求,该端点将PDF作为可流二进制返回。该端点使用双向TLS身份验证,因此当我命中该端点时,必须发送客户端证书。为此,我使用https://pypi.org/project/requests-pkcs12/来支持Python请求库。

我想从客户端下载此PDF。 理想情况下,当最终用户单击“下载”时,它会命中端点并直接流传输数据并下载。 我正一步一步地做到这一点。

当前我正在做的是将PDF下载到文件中,然后将该文件发送回客户端。写入文件的速度很慢,我想避免从文件下载到文件的步骤,而只是以某种方式发送回流响应。 有没有一种方法可以使用Python的Request直接流式传输?

 #hit the mutual tls authenticated endpoint
response = post(f'{url},stream=True,pkcs12_filename=client_certificate_path,pkcs12_password=client_certificate_passphrase)

#Write the returned data to a file
    with open('/tmp/newfile.pdf','wb') as f:
             f.write(response.content)

#Send the file back to client with Django's FileResponse
    return FileResponse(open('/tmp/newfile.pdf','rb'))

虽然我使用的Django似乎可以用StreamingHttpResponse很好地解决了这个问题,但由于它不允许我发送客户端证书和受密码保护的客户端证书密钥,因此无法正常工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...