【问题标题】:python says http-response code is 200, but server says 301python说http响应代码是200,但服务器说301
【发布时间】:2014-12-07 12:25:24
【问题描述】:

我正在使用 python 3 的 urllib.request.urlopen() 函数。在过去,它运行良好。事实上,几个月前我在同一个程序中使用过它,它运行良好。但是,现在,每当我尝试使用 api 在我的网站上发布时,服务器都会记录 301 响应。当我使用 response.getcode() 查找响应时,它显示为 200。

什么会导致这种差异?是否有另一种方法来检查我的请求是否失败,或者有一种调试方法?我个人无权访问服务器,但我可以让管理员帮我检查它们。

谢谢大家!

编辑

我在wireshark 中找到了HTTP 请求。它发送一个 POST 请求,得到一个 301 (text/html),然后它发送一个 GET 请求并得到 200 (application/json)。这是什么意思?我最初的请求是 json(我使用了 urllib.request.urlopen(url,data))。 POST 到http://sefaria.org/api/texts/Rashi_on_Berakhot.2a.1.1 的第一个响应是:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
    <head>
    <title>301 Moved Permanently</title>
    </head>
    <body>
        <h1>Moved Permanently</h1>
        <p>The document has moved <a href="http://www.sefaria.org/api/texts/Rashi_on_Berakhot.2a.1.1">here</a>.</p>\n
        <hr>
        <address>Apache/2.4.6 (Ubuntu) Server at sefaria.org Port 80</address>
    </body>
</html>

该 url 的 GET 请求以 200 响应

【问题讨论】:

  • 301 是一个重定向。 urllib 是否有可能自动跟随重定向,然后在新位置获得 200?当所有其他方法都失败时,启动wireshark。
  • 是的,这是可能的。我在wireshark中找到了请求,但是如何找到响应代码。如果它正在重定向,我如何找到它重定向的位置?我对wireshark不熟悉
  • 它应该类似于this。您应该看到HTTP/1.1 200 OKHTTP/1.1 301 Moved Permanently 或类似的东西。然后深入了解底部窗格中的协议特定层。

标签: python python-3.x http-redirect http-request


【解决方案1】:

原来我发到http://website.com而不是http://www.website.com... 哎呀。

【讨论】:

    【解决方案2】:

    这不是遇到 301 时的预期行为:

    如果收到 301 状态代码以响应 GET 或 HEAD 以外的请求,除非用户可以确认,否则用户代理不得自动重定向请求,因为这可能会改变请求被执行的条件发布。

    (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)

    您应该考虑将此作为错误报告给 Python 开发人员。

    【讨论】:

    • 我相信它没有自动重定向,这是我的问题。它默默地失败了。除非您说后续 GET 请求是重定向。
    • 这不是错误,而是一项功能。重定向非常普遍,默认情况下遵循重定向是唯一明智的做法。
    • @w0rp urllib.request.HTTPRedirectHandler.redirect_request() 在 Python 3.4.0 中对 POST 的 301 响应显式引发 HTTP 错误。所以上面描述的场景不应该发生。它不是一个功能。如果仍有疑问,请查看代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 2020-11-29
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多