1

XSRF保護を有効にしたPOSTHTTPリクエストを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 に答える