【问题标题】:Python HTTP Server gets multiple requests from iPhonePython HTTP Server 从 iPhone 获取多个请求
【发布时间】:2011-02-23 01:38:36
【问题描述】:

我创建了一个非常基本的 Python http 服务器 (Python v3.2),它使用 BaseHTTPRequestHandler 来处理 GET 请求。当我在计算机上使用任何网络浏览器时,它工作正常。但是,当我在 iPhone 上使用移动浏览器时,我总是会看到三个 GET 请求。

例如,如果我运行这个:

import http.server
from http.server import HTTPServer
from http.server import BaseHTTPRequestHandler

class MyHandler (BaseHTTPRequestHandler):
    def do_GET(self):
        print(self.path)

print('running server on port 80')
server = HTTPServer(('', 80), MyHandler)
server.serve_forever()

..然后我在 iPhone 上的网络浏览器中输入“192.168.1.191/blah”,输出如下所示:

/blah
/blah
/blah

但是如果我从电脑上做,它只发送一个 GET 请求,所以输出是这样的:

/blah

谁能向我解释为什么它在 iPhone 上会这样?它每次始终发送 3 个请求。有没有办法解决?

顺便说一句,如果我使用 Apache 服务器,iPhone 不会这样运行。它只发送一个 GET 请求。只有当我使用 Python 运行服务器时。

谢谢

【问题讨论】:

    标签: iphone python http request


    【解决方案1】:

    Safari 最多返回 3 次请求 - 显然是在 some HTTP 错误的情况下。 从 do_GET() 方法内部生成正确的 HTTP 响应将解决此问题。

    【讨论】:

    • 好的,那么我是否只需将以下行添加到我的 do_GET() 方法中? self.send_response(200) 当我这样做时,它似乎只是锁定了一秒钟,但是是的,它只发送一个 GET。
    • 抱歉,一个请求通过 Safari 到达服务器端时正常工作。
    • 我正在使用 AJAX 将不同的 GET 发送到我的 Python 服务器,背靠背。当我使用上述方法(发送 200 响应)时,它会锁定几秒钟。因此,如果我尝试间隔一秒钟发送两个不同的GETS,第一个到达,然后挂起几秒钟,然后第二个到达并得到处理。我可以尝试一些额外的 HTTP 响应吗?谢谢
    • 没关系。弄清楚了。我使用了 self.send_response_only(200)。感谢您的指导。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多