1

我正在尝试通过启用 XSRF 保护的 POST HTTP 请求作为 AJAX 请求上传文件,但我每次都得到:

WARNING:root:403 POST /path/to/uploader/ (127.0.0.1): '_xsrf' argument missing from POST

我检查了请求的数据:

_xsrf=01f86a98fe2346f9baec589dc8af3027&id=2

如我所见,我将 _xsrf 发送给处理程序,但找不到此参数。

如果我将 multipart/form-data 禁用为 contentTypem,则错误将消失,并且 self.request.files 也为空。

有人知道如何解决吗?

4

1 回答 1

1

如果您包含表单的代码可能会有所帮助。

你需要在你的<form>标签中包含这个的输出(在 中生成tornado.web.RequestHandler.get()):

self.xsrf_form_html()

如果输入字段名为upload_file,您可以在处理POST 的处理程序中执行此操作:

file = self.request.files['upload_file'][0]
uploaded_content_type = file['content_type']
uploaded_filename = file['filename']
local_file_path = '/some/path/on/server/uploaded.file'
output_file = open(local_file_path, 'w')
output_file.write(file['body'])
output_file.close()
于 2013-02-09T13:17:12.113 回答