Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何传递包含?,/,&的url内瓶webservice方法_Python_Regex_Web Services_Flask_Request - Fatal编程技术网

Python 如何传递包含?,/,&的url内瓶webservice方法

Python 如何传递包含?,/,&的url内瓶webservice方法,python,regex,web-services,flask,request,Python,Regex,Web Services,Flask,Request,嗨,我正在尝试在Flask方法中传递URL My url: https://example.org/de?=fg&hi=jk 我尝试了以下步骤: @app.route('/flip/<path:url>') def flip(url): return "retrievved url:"+str(url) calling the url : localhost:8200//flip/https://example.org/de?=fg&hi=jk retu

嗨,我正在尝试在Flask方法中传递URL

My url: https://example.org/de?=fg&hi=jk
我尝试了以下步骤:

@app.route('/flip/<path:url>')
def flip(url):
    return "retrievved url:"+str(url)

calling the url : localhost:8200//flip/https://example.org/de?=fg&hi=jk 
returns : `https://example.org/de`

and another method,

@app.route('/flip')
def flip(url):
    url=request.args.get('url')
    return "retrievved url:"+str(url)


calling the url: localhost:8200//flip?url=https://example.org/de?=fg&hi=jk  
returns : 'https://example.org/de?=fg'
我的预期输出应该返回我们传递的整个urlhttps://example.org/de?=fg&hi=jk


请帮忙,提前谢谢

这与烧瓶无关。你的URL并不是你认为的意思

例如,此URL:

localhost:8200//flip?url=https://example.org/de?=fg&hi=jk 
…有两个查询参数:

url=https://example.org/de?=fg
hi=jk
&分隔外部请求上的查询参数,因此它有单独的url和hi参数

一开始在查询参数中包含许多这样的字符也是非法的,但通常可以侥幸逃脱

这就是为什么需要在其他URL中嵌入URL的网站使用。您的页面应发送以下内容:

localhost:8200//flip?url=https%3A//example.org/de%3F%3Dfg%26hi%3Djk
现在只有一个查询参数:

url=https%3A//example.org/de%3F%3Dfg%26hi%3Djk
然后,当解析查询字符串时,得到的结果是:

url=https://example.org/de?=fg&hi=jk 
如果您确实无法在客户端解决问题,那么您可以迭代所有查询参数,并尝试将它们重新组合为一个url参数

或者,您可以获取整个URL request.URL而不是request.args,并手动对其进行自己的解析,而不是让Flask或Python为您进行解析

但是无论哪种方式,这都是愚蠢的,除非绝对必要,否则你不应该考虑。< / P > 另外,你的URL是非法的,你不想依赖它,你通常会侥幸逃脱。除非可以接受的是,比如说,一些用户将无法连接,因为他们的代理服务器弄坏了URL,而你整个周末都在桌子上使劲地调试它,然后它对其中一些人有效,但一些人现在得到了错误的页面,然后新版本的Chrome突然打破了一些不同的东西,并且


当您坚持标准时,HTTP已经足够复杂和混乱,特别是因为您的框架为您承担了大部分繁重的工作。

这与Flask无关。你的URL并不是你认为的意思

例如,此URL:

localhost:8200//flip?url=https://example.org/de?=fg&hi=jk 
…有两个查询参数:

url=https://example.org/de?=fg
hi=jk
&分隔外部请求上的查询参数,因此它有单独的url和hi参数

一开始在查询参数中包含许多这样的字符也是非法的,但通常可以侥幸逃脱

这就是为什么需要在其他URL中嵌入URL的网站使用。您的页面应发送以下内容:

localhost:8200//flip?url=https%3A//example.org/de%3F%3Dfg%26hi%3Djk
现在只有一个查询参数:

url=https%3A//example.org/de%3F%3Dfg%26hi%3Djk
然后,当解析查询字符串时,得到的结果是:

url=https://example.org/de?=fg&hi=jk 
如果您确实无法在客户端解决问题,那么您可以迭代所有查询参数,并尝试将它们重新组合为一个url参数

或者,您可以获取整个URL request.URL而不是request.args,并手动对其进行自己的解析,而不是让Flask或Python为您进行解析

但是无论哪种方式,这都是愚蠢的,除非绝对必要,否则你不应该考虑。< / P > 另外,你的URL是非法的,你不想依赖它,你通常会侥幸逃脱。除非可以接受的是,比如说,一些用户将无法连接,因为他们的代理服务器弄坏了URL,而你整个周末都在桌子上使劲地调试它,然后它对其中一些人有效,但一些人现在得到了错误的页面,然后新版本的Chrome突然打破了一些不同的东西,并且


当你坚持这些标准时,HTTP已经够复杂和混乱的了,特别是因为你的框架为你承担了大部分繁重的工作。

谢谢你的回答,有没有办法通过将URL视为字符串或任何最好的方式来获得我的URL的输出way@pyd是的,您可以将整个URL作为字符串获取。但是,您必须手动解析它,因为如果您尝试将其传递给任何标准解析器,它将返回与开始时相同的问题。您的意思是localhost:8200/flip/,这也不行,它只提取字符串直到“?”@pyd不,这不是我的意思。如果您建议更改内容,将url作为路径组件端点而不是查询参数发送,这将使事情变得更简单。但似乎有点滥用flip不是端点,不是flip/url?。您仍然需要对URL进行百分比编码,否则仍然发送无效的查询字符串。为什么你不能从客户端正确地发送查询字符串呢?谢谢你的回答,有没有办法通过将URL视为字符串或任何最好的方式来获取我的URL的输出way@pyd是的,您可以将整个URL作为字符串获取。但是,您必须手动解析它,因为如果您尝试将其传递给任何标准解析器,它将返回与开始时相同的问题。您的意思是localhost:8200/flip/,这也不行,它只提取字符串直到“?”@pyd不,这不是我的意思。若您建议更改内容,将url作为路径组件端点而不是查询参数发送,那个么这将使内容成为一个问题 容易一点。但似乎有点滥用flip不是端点,不是flip/url?。您仍然需要对URL进行百分比编码,否则仍然发送无效的查询字符串。为什么不能从客户端正确发送查询字符串?