Request.referrer не перенаправляет на предыдущий url-адрес
Hi everyone, I am facing a hard time since I could not figure out how to redirect to the previous URL. When I tested request.referrer 10 days ago, it worked, but now it's not working anymore and instead, I am getting the same URL. I am creating a Google login. Here's the code:
@main.route("/post/<int:post_id>", methods=["GET", "POST"]) def post(post_id): post = Posts.query.filter_by(id=post_id).one() comments = post.comments if post == None: return ('Error') elif current_user.is_authenticated: return render_template("show_post0.html", post=post, comments=comments, username=current_user.user_name, userimage=current_user.user_photo) return render_template("show_post_login.html", post=post, comments=comments) # redirect to previous url def redirect_url(default='main.post'): return request.args.get('next') or \ request.referrer or \ url_for(default) @main.route("/login/callback") def callback(): # Get authorization code Google sent back to you code = request.args.get("code") # Find out what URL to hit to get tokens that allow you to ask for # things on behalf of a user google_provider_cfg = get_google_provider_cfg() token_endpoint = google_provider_cfg["token_endpoint"] # Prepare and send request to get tokens! Yay tokens! token_url, headers, body = client.prepare_token_request( token_endpoint, authorization_response=request.url, redirect_url=request.base_url, code=code, ) token_response = requests.post( token_url, headers=headers, data=body, auth=(GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET), ) # Parse the tokens! client.parse_request_body_response(json.dumps(token_response.json())) # Now that we have tokens (yay) let's find and hit URL # from Google that gives you user's profile information, # including their Google Profile Image and Email userinfo_endpoint = google_provider_cfg["userinfo_endpoint"] uri, headers, body = client.add_token(userinfo_endpoint) userinfo_response = requests.get(uri, headers=headers, data=body) # We want to make sure their email is verified. # The user authenticated with Google, authorized our # app, and now we've verified their email through Google! if userinfo_response.json().get("email_verified"): unique_id = userinfo_response.json()["sub"] users_email = userinfo_response.json()["email"] picture = userinfo_response.json()["picture"] users_name = userinfo_response.json()["given_name"] else: return "User email not available or not verified by Google.", 400 # Create a user in our db with the information provided # by Google author = Author( google_id=unique_id, user_name=users_name, user_email=users_email, user_photo=picture ) user = Author.query.filter_by(google_id=unique_id).first() # Doesn't exist? Add to database if user: # Begin user session by logging the user in login_user(user) else: db.session.add(author) db.session.commit() login_user(author) # Send user back to homepage print("##############", request.args.get('next')) #This produce None print ("#########", request.referrer) # this produce the link of the header, not the previous page. return redirect(redirect_url())
I could redirect to the Post route directly but I want to use this method in more than one route. Thanks in advance!
Что я уже пробовал:
Я перепробовал все возможные способы в интернете. однако при успешном входе в систему он обновляет тот же URL-адрес, а не возвращается к предыдущему URL-адресу. Я буду благодарен, если кто - нибудь сможет найти решение. Может быть, я что-то упустил. может быть это глупый Жук