我正在DRF + Angular上进行项目。当前在localhost上,我可以通过以下操作下载文件:
@action(methods=['get'], detail=True)
def download(self, *args, **kwargs):
instance = self.get_object()
file_handle = instance.file.open()
response = FileResponse(file_handle.read(), content_type='application/file')
response['Content-Length'] = instance.file.size
response['Content-Disposition'] = f'attachment; filename="{instance.file.name}"'
file_handle.close()
return response
它可以在localhost上运行,但是当前端尝试在服务器上的相同url下获取相同的文件时-我使用HTTP 401 Unauthorized
重定向到DRF模板。但是我已经输入了我的凭据。怎么了?
答案 0 :(得分:0)
我认为前端跨源问题 您可以从here
了解更多信息在django,您也可以使用django-cors-headers
来解决它
我不确定,因为您没有提供网络服务器配置的完整详细信息
还要检查响应头 是否添加文件类型为??的
'Content-Description: File Transfer'
'Content-Type: application/octet-stream'
'Content-Disposition: attachment; filename="'.basename($file).'"'
'Content-Length: ' . filesize($file)
'Pragma: public'
'Cache-Control: must-revalidate'
'Expires: 0'
'Accept: <MIME_type>/*'
检查this