Mar*_*vey 3 curl flask python-3.x
我正在 Flask 中构建一个小型服务器应用程序,作为我正在从事的项目的一部分。部分功能是能够上传一个小的指令文件,供其中一个关键注入器下载。每个密钥注入器都有一个对应于客户端的名称 ('''),并且文件通过 POST 请求上传到服务器。
以下清单是 Flask 代码。
@app.route('/upload/instructions/<ducky_name>/', methods = ['POST'])
def upload_Instruction(ducky_name):
file = request.files()
path = os.getcwd() +"/files/" + ducky_name
with open(path, "w") as f:
f.write(file)
print(f)
f.close()
return "Success"
Run Code Online (Sandbox Code Playgroud)
我正在使用此 curl 命令上传文件。
curl -X POST -d @test http://127.0.0.1:5000/upload/instructions/test1
Run Code Online (Sandbox Code Playgroud)
然后我得到一个 308 重定向,文件没有上传。这是我第一次以这种方式将文件作为POST上传,也是我第一次使用Flask。
谢谢
Flaskuse werkzeug.routing.Rule,默认启用strict_slashes,访问不带尾部斜杠的分支 URL 将重定向到附加斜杠的 URL。这会导致 308(永久重定向)响应。
如果你想支持这两种路由:
/upload/instructions/<ducky_name>//upload/instructions/<ducky_name>只需使用 来设置 app.route strict_slashes=False,如下所示:
@app.route('/upload/instructions/<ducky_name>/', methods = ['POST'],
strict_slashes=False)
def upload_Instruction(ducky_name):
pass
Run Code Online (Sandbox Code Playgroud)
参考: https: //werkzeug.palletsprojects.com/en/1.0.x/routing/
您在 curl 请求中使用的 URL 没有像 Flask 路由中那样的尾部斜杠。在这种情况下,框架将您重定向到带有斜杠的路由(请参阅文档条目)。所以只需添加尾部斜杠:
curl -X POST -d @test http://127.0.0.1:5000/upload/instructions/test1/
Run Code Online (Sandbox Code Playgroud)
Flask 使用 308 HTTP 响应代码而不是更常见的 301 来保留重定向期间的请求方法和正文。
| 归档时间: |
|
| 查看次数: |
1950 次 |
| 最近记录: |