我是Python和Flask的新手,我需要重定向以及任意或完整的url,它可以很好地处理blow代码
但是,如果url中有“/#/”,那么它就不起作用,用户会将这些url添加到书签中,作为迁移的一部分,我需要重定向到新域
例如:
user url: http://127.0.0.1:5000/abc1/cba2/#/yyyy/2001
URL to be redirected: http://168.192.0.12:5000/abc1/cba2/#/yyyy/2001
它不工作,因为有符号,Flask只捕获url直到符号[/abc1/cba2/],因此重定向失败
我如何解决这个问题
from flask import Flask, redirect
import json
def create_app():
app = Flask(__name__)
@app.route('/', defaults={'arbitrary': ''}, methods=['GET'])
@app.route('/<path:arbitrary>')
def red(arbitrary):
print (arbitrary)
url_substring = "/yyyy/"
if url_substring in arbitrary:
new_path = 'https://xxxx.com/' + arbitrary
print (new_path)
return redirect(new_path, code=302)
else:
return redirect("https://xxxx.com", code=302)
根据http规范,#签名后的内容只能由客户端访问。在您的情况下,您可以在从客户端加载一个示例页面后阅读省略的部分,该页面在#之后发送带有省略内容的ajax请求
请看这里以供参考https://stackoverflow.com/a/9384407/4374376
片段Url的[在#之后的任何内容]都不会发送到服务器端,因此JS是唯一的选项,为此我使用了NodeJS[服务器端]和JS
一旦客户点击书签URL,它就会到达NodeJS,从那里它就会被路由到HTML页面,让JS获取片段URL并相应地重定向
下面的JS将获得片段URL
var urlAddress=document.URL.substr(document.URL.indexOf(“#”)+1)
您知道
#
符号在URL中的含义吗如果你必须包括它,那么你必须避开这个标志
URL应该是:
http://127.0.0.1:5000/abc1/cba2/%23/yyyy/2001
%23表示
#
符号相关问题 更多 >
编程相关推荐