重定向到不同的 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_rulerequest.pathrequest.full_path获取路线吗? 这行不通。根据 RFC,重定向请求不包含任何有效负载或标头。您将错过在原始请求中通过 POST 提供的有效负载。 @AndrejsCainikovs 好的,那么我们需要一种不同的方法。

以上是关于重定向到不同的 URL 仅更改烧瓶中的域名的主要内容,如果未能解决你的问题,请参考以下文章

完全重定向所有网址,只需更改域名

gunricorn + nginx 的烧瓶重定向(url_for)错误

域名更改后的301重定向

使用 htaccess 重定向页面,但保留 URL 结构并仅更改域

将域重定向到另一个域并更改 url [关闭]

如何在不更改web.config文件中的URL的情况下重定向域?