重定向到不同的 URL 仅更改烧瓶中的域名
Posted
技术标签:
【中文标题】重定向到不同的 URL 仅更改烧瓶中的域名【英文标题】:Redirect to a different URL only changing the domain name in flask 【发布时间】:2018-08-02 20:16:01 【问题描述】:我正在使用 Python 烧瓶。我有一个POST
请求,其中包含一些有效负载说:
abc.com/hello/hello1
我想将此 (302) 重定向到:
xyz.com/hello/hello1
仅更改域名,同时保持其余部分和有效负载不变。有没有简单的方法来做到这一点?
【问题讨论】:
【参考方案1】:根据 RFC,重定向请求(全部为 3xx)不能包含请求数据或标头。您将错过在原始请求中通过 POST 提供的有效负载。
我可以立即想到两种可能的解决方法:
-
给客户端一个新的URL,在客户端实现进一步的逻辑;
在后端创建一个代理处理程序,它将自己执行请求并返回自己的答案。
【讨论】:
【参考方案2】:编辑:根据 Andrejs Cainikovs 在下面的评论,这不适用于带有有效负载的 POST。
在您的端点中,获取使用 request.url
的 url(see request API here 以获得更多选项)。然后你可以重写它并进行重定向。
newUrl = "xyz.com/" + route
return redirect(newUrl, code=302)
【讨论】:
我事先不知道 /hello/hello1/ 部分。无论 abc.com 之后是什么,我都想将部分重定向到 xyz.com @OliverBlue 你能用request.url_rule
或request.path
或request.full_path
获取路线吗?
这行不通。根据 RFC,重定向请求不包含任何有效负载或标头。您将错过在原始请求中通过 POST 提供的有效负载。
@AndrejsCainikovs 好的,那么我们需要一种不同的方法。以上是关于重定向到不同的 URL 仅更改烧瓶中的域名的主要内容,如果未能解决你的问题,请参考以下文章
gunricorn + nginx 的烧瓶重定向(url_for)错误