Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 如何验证Flask中的URL参数_Python_Url_Flask_Http Post_Pythonanywhere - Fatal编程技术网

Python 如何验证Flask中的URL参数

Python 如何验证Flask中的URL参数,python,url,flask,http-post,pythonanywhere,Python,Url,Flask,Http Post,Pythonanywhere,这是我第一个使用Flask和Python的应用程序 我使用下面的URL格式从Arduino向运行在Pythonywhere服务器实例上的flask应用程序发送POST请求 有效的POST请求:3个URL参数 我需要通过以某种形式验证URL来阻止进一步处理请求。我想用它来保护我的应用程序不受未经身份验证的POST请求的影响 可以这样说:任何超过3个URL参数的内容 如何在烧瓶中实现这一点 还建议,如果有任何更好的方法可以用来保护未经授权的申请 如果您愿意从URL参数(即URL中“?”符号之后的

这是我第一个使用Flask和Python的应用程序

我使用下面的URL格式从Arduino向运行在Pythonywhere服务器实例上的flask应用程序发送POST请求

有效的POST请求:3个URL参数

我需要通过以某种形式验证URL来阻止进一步处理请求。我想用它来保护我的应用程序不受未经身份验证的POST请求的影响

可以这样说:任何超过3个URL参数的内容

如何在烧瓶中实现这一点


还建议,如果有任何更好的方法可以用来保护未经授权的申请

如果您愿意从URL参数(即URL中“?”符号之后的任何内容)切换到路径参数(即
路径
HTTP头中的任何内容,或URL中第一个“/”后面和“?”前面的部分),则可以使用
flask
验证参数并自动抛出错误

您的示例可以如下所示:

@app.route('/post/<int:node_id>/<float:lat>/<float:lng>', methods=['POST'])
def process_post_request(node_id, lat, lng):
    # do some work
    return your_result
@app.route('/post//',methods=['post'])
def处理后请求(节点id、lat、lng):
#做些工作
返回您的结果
然后,您可以向URL发送请求,该URL看起来像这样:
http://example.com/post/1234/-11.45/21.34

您可以在此处找到更多关于此的信息:

为了确保访问安全,您可以使用以下示例代码段:

如果您只是在玩游戏,我建议您仅限制对HTTPS的访问,并使用基本身份验证。这是您可以使用简单的装饰器来完成的,如下所述:


您将在浏览器中得到提示,询问您的用户名和密码,并且浏览器将在会话期间记住它。或者,您可以在
授权
标题中以base64编码的形式设置用户名和密码:

您看到发出请求的授权与该请求中的查询参数数量之间有什么联系?@jornsharpe Authorization这里我的意思是,假设硬件设备(arduino节点)的发送由3个以上URL参数组成的POST请求,如上文所述。我不想处理这样的请求。更多地说错误检查!(注:请原谅,用适当的术语来说,是应用程序开发的新手)你有没有看例如?验证输入与保护应用程序不是一回事,因此不清楚您想要实现什么。如果您只是想检查查询参数字典中的唯一键是
节点
纬度
液化天然气
,您试过写吗?谢谢Grepe!。以上是我将尝试的一个解决方案。URL中“?”之后的参数是否可以做类似的事情?。据我所知,没有将URL修改为“node_id/lat/long”?@balaji,flask中没有内置URL参数验证。你得自己写。URL参数是非常免费的,很容易更改和/或附加,而不会破坏任何内容。。。这就是为什么它们被用于跟踪目的(尝试点击几乎所有的横幅广告并查看您的URL)。