gpt4 book ai didi

routes - 在 Flask 中阻止特定路由上的引用

转载 作者:行者123 更新时间:2023-12-03 16:23:35 27 4
gpt4 key购买 nike

是否可以在 Flask 中阻止来自站点本身外部的引用者的特定路由(例如 /data )?

最佳答案

request.referrer包含请求的引用者,因此您可以基于此应用一些逻辑。

from flask import Flask, request, redirect, url_for, render_template_string

app = Flask(__name__)

@app.route('/')
def home():
return render_template_string('''
<a href="{{ url_for('data') }}">Correctly Referred</a>
''')

@app.route('/data')
def data():
print request.referrer
if request.referrer != 'http://127.0.0.1:5000/':
return abort(403) # Forbidden
# or maybe: return redirect(url_for('home'))
return 'Woo!'


if __name__ == '__main__':
app.run(debug=True)

我确信操作系统和设备中的不同浏览器会对引用者做些奇怪的事情,因此值得一看他们的特质。也许在他们访问您的主页/入口路径时设置一个 session 值会更好,然后使用 before_request 检查 session 值是否设置,几乎就像一个自动登录。

因此,如果您想保护所有页面,除了您的 home路线——你可以这样:
@app.before_request
def check_session():
print request.endpoint
if not session.get("legit") and request.endpoint is not 'home':
return redirect(url_for('home'))

然后在您的回家路线上,只需添加 session["legit"] = True .现在,每当用户访问该站点时,如果他们是新用户,或者 session 仍处于事件状态,他们将被重定向回主页,他们将能够看到所有内容。有点像酒店/咖啡厅的无线热点。

关于routes - 在 Flask 中阻止特定路由上的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26557310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com