- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在通过 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/
我正在通过 POST 将带有 python 脚本中的字符串的文本文件发送到我的服务器: fo = open('data'.txt','a') fo.write("hi, this is my test
在我使用 Open C 移植到 Symbian 的多线程应用程序中,我有一个使用 RFile 将数据读/写到文件的对象。这个对象应该从不同的线程访问(它是线程安全的),但是显然 RFile 对象只能在
我正在构建一个可以转发所有 SSL 流量的 HTTPS 代理。它被称为透明隧道。无论如何,我对 Python 的 socketserver 有问题。当我调用 rfile.read() 时,需要很长时间
我正在编写一个简单的 SocketServer.TCPServer 请求处理程序 (StreamRequestHandler),它将捕获请求以及 header 和消息正文。这是为了伪造一个我们可以用于
我使用 BaseHTTPRequestHandler 实现了一个 python 服务器,它通常会在从套接字文件对象读取时挂起。我读了多少字节似乎并不重要。我可以读取 30k 字节并且它不会挂起,或者我
我刚刚开始为 Symbian 开发。我目前正在使用诺基亚 Qt。我正在尝试启动另一个基于 mime 类型的应用程序。我目前正在关注这个 example .我想尝试打开一个 .txt 文件。 我发现很难
在重载 SimpleHTTPRequestHandler 时,我的函数在 self.rfile.read() 上阻塞。读取前如何查看rfile中是否有数据?或者,是否存在在缺少数据时返回的非阻塞读取调
我在通过 Ajax POST 接收到本地 python http.server 的大字符串时遇到问题。 我正在尝试创建一个在本地主机上运行的网络应用程序。 Web 应用程序在启动时加载一个 JSON
我是一名优秀的程序员,十分优秀!