gpt4 book ai didi

javascript - Python本地服务器问题: rfile gets truncated when posting through ajax

转载 作者:行者123 更新时间:2023-11-29 19:29:07 27 4
gpt4 key购买 nike

我在通过 Ajax POST 接收到本地 python http.server 的大字符串时遇到问题。

我正在尝试创建一个在本地主机上运行的网络应用程序。 Web 应用程序在启动时加载一个 JSON 文件,并使用它来将数据加载到应用程序中。这些数据最终会在使用该应用程序时被操纵。

保存时,我想将整个修改后的数据发送到 python 脚本,然后将该数据写入上述 JSON 文件,这样当 webapp 重新打开时,它就会有最新的数据。

服务器正常工作,将较小的数据保存到其他文件也没有任何问题。问题是由于我要保存的数据的大小。将数据(作为 JSON.stringified 字符串)发送到 python 脚本时,字符串被 chop ,因此 python 脚本无法解析它以重新创建 JSON 对象。

我修改了 do_POST 函数以返回内容长度 header ,然后是接收到的数据的实际大小:

    def do_POST(self):
length = int(self.headers['Content-Length'])
print(length)
post_data = self.rfile.read(length)
print(len(post_data))

浏览器发送未修改的数据时,Content-length header为1013727,但rfile length仅为23684。

我打印了 rfile 数据,实际上,它不是我尝试发送的整个字符串,而是停在了一个数组的中间。

我使用 Chrome 开发工具进行了检查,请求负载也是我预期的完整字符串,因此我假设问题可能出在 http.server 的文件大小限制上。不幸的是,我找不到任何关于这可能是什么或如何更改它的信息。

我使用 Python 3.4 和 Google Chrome 作为我的浏览器。

任何帮助将不胜感激。谢谢!

最佳答案

我在使用 Python 3.4 + Chrome 时也遇到了同样的问题。 IE 和 Firefox 也会出现错误。

我修改了它:

# Make rfile unbuffered -- we need to read one line and then pass
# the rest to a subprocess, so we can't use buffered input.
#rbufsize = 0
rbufsize = -1

并注释掉:

# throw away additional data [see bug #427345]
## while select.select([self.rfile._sock], [], [], 0)[0]:
## if not self.rfile._sock.recv(1):
## break

问题似乎是 rfile 缓冲,而 CGI 的 POST 数据很大...

不知道为什么...我在 python 错误数据库上打开了一个新条目。

关于javascript - Python本地服务器问题: rfile gets truncated when posting through ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29214698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com