【问题标题】:Django set headers on redirect()Django在redirect()上设置标题
【发布时间】:2016-10-06 06:19:44
【问题描述】:

我正在尝试答案here 中的方法。像这样的:

url = 'https://InternalURL'
token = 'api token here'
response = redirect(url)
response['Token'] = token
return response

此代码位于单击模板中的链接时调用的视图中。在此代码之前执行了一些操作以构建正确的 url 并获取 api 令牌。

如果我通过 Fiddler 检查请求,则具有 302 状态代码的第一个重定向包含我设置的标头。但是尝试导航到我想要重定向到的实际 url 的后续请求,我需要的标头没有设置。

显然这会导致请求失败,因为标头中不存在身份验证令牌。

我是否完全遗漏了一些明显的东西?有一个更好的方法吗? 预先感谢您的任何帮助!

【问题讨论】:

  • 嗯,我认为这是一个 http 概念问题。如果您在响应中设置的标头不是 cookie,则您的客户端必须再次手动设置。
  • 嗯.. 那么您可能对如何实现这一点有任何建议,或者以不同的方式解决这个问题?
  • 使用set_cookie将其设置为cookie,请参阅此答案:stackoverflow.com/questions/1622793/…

标签: django redirect


【解决方案1】:

试试下面的代码,它对我有用

 base_url = '/dashboard/'  # 1 /<redirect-route>
 query_string =  urlencode({'token': jwt.encode(payload, "SECRET PHRASE")})  # 2 token=jwt-token
 url = '{}?{}'.format(base_url, query_string)  # 3 /<redirect-route>/?token=jwt-token
        return redirect(url)

你可以像这样在视图中检索

token = request.GET.get('token')

我不知道这是否是最好的方法,但它在我的情况下是有效的。

【讨论】:

    猜你喜欢
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    相关资源
    最近更新 更多