我有一个带有图片的新闻模型,这些新闻可以通过JSON REST API加载。服务器用权威机构的证书签名,所有请求都必须用https完成。
我的问题是,ModelSerializer使用http而不是https序列化ImageField。我如何更改它?
下面是代码摘要和输出示例:
#myProject/models.py
class News(models.Model):
image = models.ImageField()
#myProject/serializers.py
class NewsSerializer(serializers.ModelSerializer):
class Meta:
model = News
fields = ('image')
#request for a news
https://myDomain/news/the-news-id-here/
#current output
{
"image": "http://myDomain/media/news/imageName.jpg"
}
#wanted output
{
"image": "https://myDomain/media/news/imageName.jpg"
}
谢谢大卫
3条答案
按热度按时间umuewwlo1#
请考虑将
proxy_set_header X-Forwarded-Proto https;
添加到Nginx虚拟主机文件中,即位于/etc/nginx/sites-available/
中的conf文件。因此,简而言之,您的conf文件可能如下所示:总之,添加
proxy_set_header X-Forwarded-Proto https;
后,您的REST API将被重定向到https。mw3dktmi2#
您可以在nginx config中执行此操作,如下所示
pb3s4cty3#
我也遇到了同样的问题,我的解决方法是在django的settings.py文件的MEDIA_URL中添加完整的https网址:
修改前:
修改后:
不需要调整nginx配置。