[英]Django REST framework absolute urls with nginx always return 127.0.0.1
[英]django rest framework https for absolute urls?
托管api的服務器正在為絕對URL返回http,即使頁面是使用https加載的,這是否與django rest框架有關? 因為似乎沒有任何明顯的方法可以解決這個問題。
這是Meta類中相關的url字段
class NewsSerializer(serializers.HyperlinkedModelSerializer):
user = UserSerializer(read_only=True)
source = serializers.CharField(source='get_source_url', read_only=True)
comments_count = serializers.IntegerField(read_only=True)
date_added = serializers.CharField(source='humanize_date_added',
read_only=True)
is_owner = serializers.SerializerMethodField()
user_voted = serializers.SerializerMethodField()
favorited = serializers.SerializerMethodField()
image = serializers.SerializerMethodField()
def create(self, validated_data):
user = self.context['request'].user
story = News(user=user, **validated_data)
story.save()
return story
def get_is_owner(self, obj):
user = self.context['request'].user
if user.is_active and user == obj.user:
return True
return False
def get_user_voted(self, obj):
user = self.context['request'].user
if user.is_active:
return obj.user_voted(user)
return None
def get_favorited(self, obj):
user = self.context['request'].user
if user.is_active:
return obj.is_favorite(user)
class Meta:
model = News
fields = ('id', 'link', 'title', 'text', 'source', 'user',
'date_added', 'image', 'comments_count', 'url',
'upvotes', 'downvotes', 'user_voted', 'type',
'is_owner', 'favorited')
read_only_fields = ('date_added')
我不確定它是否與nginx有關,但我在配置中有這個
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
您需要確保nginx轉發客戶端的請求方案,因為它將向Django發出常規的http請求。 您需要將以下行添加到vhost定義中:
proxy_set_header X-Forwarded-Proto $scheme;
您是否使用Rest Framework reverse()函數來構建URL? http://www.django-rest-framework.org/api-guide/reverse/
它使用傳入請求來確定使用的協議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.