【问题标题】:How can I redirect without revealing URI fields in flask?如何在不显示烧瓶中的 URI 字段的情况下进行重定向?
【发布时间】:2016-12-24 19:29:03
【问题描述】:

我想发出一个帖子请求,将用户名和密码发送到名为 showInternal 的页面;我目前通过以下方式完成此操作:

username = "johnsmith"
password = "password1234"
return redirect(url_for('showInternal', username=username, password=password))

用于重定向和

@app.route('/internal', methods=['GET'])
@login_required
def showInternal():
    return render_template('internal.html')

用于目标页面。从某种意义上说,这种方法是有效的,它将我带到/internal?password=password1234&username=johnsmith

但是,我不想在 url 中显示用户的用户名和密码。我尝试用methods=['POST'] 替换短语methods=['GET'],但随后我收到关于该方法不被允许的错误,并且数据仍然保留在url 中。

如何在不显示在 url 中的情况下传递这些数据?

【问题讨论】:

  • 你不能重定向到 POST,所以我会通过会话来做。
  • 等一下,你当然可以通过帖子重定向 - 请参阅此处:stackoverflow.com/q/15473626/3238611
  • 我以为您试图将 GET 重定向到 POST,误读。我不相信 GET 到 POST 会受到任何客户的尊重,除非原始请求包含正文,否则我不知道该怎么做。
  • 我需要一个视图来确保用户名/密码正确,而另一个视图需要它们,因为flask 的@login_required 需要一个带有字段的请求对象。出于这个原因,我也不能只调用该函数,除非它们在包含请求时以某种方式这样做。

标签: python redirect post flask


【解决方案1】:

导入 JSON 和请求模块: import json, request

使用request模块发送post请求:

requests.post('<full-url>', data=json.dumps({'username': 'johnsmith', 'password': 'password1234'}))

然后编辑您的路线:

@app.route('/internal', methods=['POST'])

【讨论】:

  • 这似乎不起作用 - 当我尝试它时,它挂断了对 requests.post 的调用而没有实际到达页面。
  • 我刚刚编辑了答案,试试那个,有一个错字
  • 我不认为这是问题所在 - 请求 模块的名称。
  • 对不起,和原来的问题一样 - 它挂断了对 reqests.post 的调用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 2014-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多