簡體   English   中英

使用協議“帳戶”不安全重定向到 URL

[英]Unsafe redirect to URL with protocol 'account'

我正在嘗試通過中間件返回 url 重定向到登錄頁面。

我收到此錯誤,因此任何人都可以回答為什么我收到此錯誤以及如何解決此錯誤的問題

from django.shortcuts import redirect
def auth_middleware(get_response):
     def middleware(request):
        print("Middleware")
        return_url = request.META['PATH_INFO']
        if not request.session.get('user_id'):
            return redirect(f'account:login?return_url={return_url}')
        response = get_response(request)
        return response

    return middleware

Django 將重定向到account:login?return_url=some_url ,但瀏覽器不理解這一點:因為它看到一個 URL 以account:開頭,它假設account:是協議。

我們可以使用reverse(…) [Django-doc]反轉視圖:

from django.urls import reverse
from django.http import HttpResponseRedirect

def auth_middleware(get_response):
     def middleware(request):
        print("Middleware")
        return_url = request.META['PATH_INFO']
        if not request.session.get('user_id'):
            return HttpResponseRedirect(f'{reverse("account:login")}?return_url={return_url}')
        response = get_response(request)
        return response

    return middleware

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM