2

我的代码段中有以下代码段do_POST

            c_type, p_dict = cgi.parse_header(
                self.headers.get('Content-Type')
            )
            content_len = int(self.headers.get('Content-length'))
            p_dict['boundary'] = bytes(p_dict['boundary'], "utf-8")
            p_dict['CONTENT-LENGTH'] = content_len
            postvars = cgi.parse_multipart(self.rfile, p_dict)

它一直持续到最后postvars一行,然后停止。在我重新启动调试过程之前,甚至不会处理后续请求。

为了完整起见,这是我用来发布的 JS FormData

    function send() {
        var xhr = new XMLHttpRequest();
        var url = "URL_WAS_HERE";
        xhr.open("POST", url, true);
        xhr.onreadystatechange = function () {

        };
        var form = new FormData(document.querySelector('form'));
        xhr.send(form);
    }

其他简单POSTJSON字符串形式可以正常工作,但这需要是多部分的,因为我还在表单中上传了一个文件。我无法弄清楚我的代码有什么问题,它看起来或多或少与其他人multipart处理 Python 3 的代码相同。

也可能是一个有趣的线索是,如果我在调试控制台中尝试以下操作:

form = cgi.FieldStorage(
    fp=self.rfile,
    headers=self.headers,
    environ={'REQUEST_METHOD':'POST'})

...这个调试命令也永远卡住了。

4

1 回答 1

2

rfile我以前在一个我认为我没有击中的叉子上读过。仍然很奇怪的行为,我会期待一个错误。

于 2020-11-01T13:20:49.303 回答