簡體   English   中英

python表示http響應代碼為200,但服務器為301

[英]python says http-response code is 200, but server says 301

我正在使用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

原來我是在發布到http://website.com而不是http://www.website.com ...糟糕。

遇到301時,這不是預期的行為:

如果接收到響應GET或HEAD以外的請求的301狀態代碼,則用戶代理不得自動重定向該請求,除非用戶可以確認,因為這可能會更改發出該請求的條件。

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

您應該考慮將此報告為錯誤,告知Python開發人員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM